ipc中的信号量和多线程中的互斥锁都是同步机制,我觉得二者可以互换使用,大家有什么看法
by wangxiaoguang - C/C++ - 2013-04-30 12:23:21 阅读(31398) 回复(11)
信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用的” 也就是说,信号量不一定是锁定某一个...
看到内核中线程同步的方法主要有:自旋锁和信号量(当然还有其他一些方法)。他们之间的区别主要是在获取不到资源时,进程的行为不一样:自旋锁-等待、信号量-睡眠。 而用户态提供的线程同步方法主要有:信号量、互斥量、锁。但是书上却只有这三者的用法,却没有给出这三者的区别,以及适用的场合。 求助高手,能否详细说说这三者的区别及适用场合呢? 如果有具体的实例代码最好了!
线程互斥锁pthread_mutex_t的实现原理: pthread_mutex_lock: atomic_dec(pthread_mutex_t.value); if(pthread_mutex_t.value!=0) futex(WAIT) else success pthread_mutex_unlock: atomic_inc(pthread_mutex_t.value); if(pthread_mutex_t.value!=1) futex(WAKEUP) else success 信号量sem_t的实现原理(直接从glibc/nptl/DESIGN-sem.txt中摘的): sem_wait(sem_t *sem) { for (;;) { if (atomic_decrement_if...
之前一直没有怎么关注过这个问题,前些日子在面试一家公司的时候,面试官提到了pthread_cond_wait/pthread_cond_signal的实现,当时答的不是很好,回来就查了nptl的代码。前天,水木上又有人问到了信号量和互斥锁的问题,我想还是对它们的区别与实现总结一下。 首先了解一些信号量和线程互斥锁的语义上的区别: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 援引CU上一篇帖子的内容: “信号量用在多线...
在一些资料上看到,信号量包括计数信号量、二值信号量(初始值为0或1,即是互斥锁)和读写信号量。还有一些资料里把信号量和互斥锁并列讨论。 麻烦各位给指点一下互斥锁和信号量之间的关系。 先谢过
首先了解一些信号量和线程互斥锁的语义上的区别:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>援引CU上一篇帖子的内容:“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在sem_wait的时候,就阻塞在那里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开...
这是一个关于Posix线程编程的专栏。作者在阐明 概念 的基础上,将向您详细讲述Posix线程库API。本文是第三篇将向您讲述线程同步。 互斥锁 尽管在Posix Thread中同样可以使用IPC的信号量 机制 来实现互斥锁mutex功能,但显然semphore的功能过于强大了,在Posix Thread中定义了另外一套专门用于线程同步的mutex函数。 1. 创建和销毁 有两种方法创建互斥锁,静态方式和动态方式。POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER来静...
本帖最后由 tgvlcw 于 2011-03-04 15:50 编辑 最近在研究互斥锁与信号量,信号量还好理解,但是互斥锁的逻辑却有些乱,求人帮忙理一下。太乱了!!! 获得与释放互斥锁最重要的几段代码如下: [code] //这是提供给驱动的接口 void __sched mutex_lock(struct mutex *lock) { might_sleep(); /* * The locking fastpath is the 1->0 transition from * 'unlocked' into 'locked' state. */ __mutex_fastpath_lock(&lock...
在驱动编程中,这三个是用来管理竞态的有用工具。差别简述如下: 信号量:允许使用它的代码休眠,持有锁的时间可相对较长。 互斥体:信号量的特殊形式。只有0、1两种状态 自旋锁: 优点:低开销; 注意:持有锁的时间应尽量短,不允许使用它的代码休眠 ------------------------------------------ 本文系本站原创,欢迎转载! 转载请注明出处: http://embsys.cublog.cn/ ----...