社区
Linux/Unix社区
帖子详情
信号量可以用于多进程多线程同时互斥不?
zhqyzhqychn
2010-07-21 11:24:44
多个进程需要信号量来互斥,每个进程内又有多个线程,信号量在一个进程的多个线程之间需要在加线程锁互斥吗
...全文
846
14
打赏
收藏
信号量可以用于多进程多线程同时互斥不?
多个进程需要信号量来互斥,每个进程内又有多个线程,信号量在一个进程的多个线程之间需要在加线程锁互斥吗
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Coder_Granger
2010-07-21
打赏
举报
回复
[Quote=引用 8 楼 zhqyzhqychn 的回复:]
引用 4 楼 carey1986 的回复:
进程间的信号量和线程间的信号量不是一回事啊
我的信号量 是用来做多进程互斥的,所以不知道如果每个进程有多个线程使用的话会不会需要在另外线程间互斥
[/Quote]
信号量是系统全局的
谭海燕
2010-07-21
打赏
举报
回复
[Quote=引用 8 楼 zhqyzhqychn 的回复:]
引用 4 楼 carey1986 的回复:
进程间的信号量和线程间的信号量不是一回事啊
我的信号量 是用来做多进程互斥的,所以不知道如果每个进程有多个线程使用的话会不会需要在另外线程间互斥
[/Quote]
那就看你的线程之间需不需要互斥。如果需要互斥,那就得加上
zhqyzhqychn
2010-07-21
打赏
举报
回复
[Quote=引用 4 楼 carey1986 的回复:]
进程间的信号量和线程间的信号量不是一回事啊
[/Quote]
我的信号量 是用来做多进程互斥的,所以不知道如果每个进程有多个线程使用的话会不会需要在另外线程间互斥
mymtom
2010-07-21
打赏
举报
回复
[Quote=引用 6 楼 zhqyzhqychn 的回复:]
引用 2 楼 wwwunix 的回复:
这个要看你的实际应用是什么样子的。如果线程中的资源和其他进程中的资源都是同一个临界资源则需要互斥。
有点好奇,如果这些进程和线程中的资源都是同样的临界资源的话。为什么不都采用线程?
我是进程间需要通过共享内存通讯,每个进程里有多个线程可以往共享内存读写,然后也可以有多个进程往里读写,我看有人说线程信号量和进程信号量不是一回事?
[/Quote]
我咋听说是一回事呢?
zhqyzhqychn
2010-07-21
打赏
举报
回复
[Quote=引用 2 楼 wwwunix 的回复:]
这个要看你的实际应用是什么样子的。如果线程中的资源和其他进程中的资源都是同一个临界资源则需要互斥。
有点好奇,如果这些进程和线程中的资源都是同样的临界资源的话。为什么不都采用线程?
[/Quote]
我是进程间需要通过共享内存通讯,每个进程里有多个线程可以往共享内存读写,然后也可以有多个进程往里读写,我看有人说线程信号量和进程信号量不是一回事?
太乙
2010-07-21
打赏
举报
回复
信号量有进程信号量,也有线程信号量。。。
luketty
2010-07-21
打赏
举报
回复
同样需要
carey1986
2010-07-21
打赏
举报
回复
进程间的信号量和线程间的信号量不是一回事啊
wwwunix
2010-07-21
打赏
举报
回复
这个要看你的实际应用是什么样子的。如果线程中的资源和其他进程中的资源都是同一个临界资源则需要互斥。
有点好奇,如果这些进程和线程中的资源都是同样的临界资源的话。为什么不都采用线程?
谭海燕
2010-07-21
打赏
举报
回复
你可以在线程中设置一个信号量
谭海燕
2010-07-21
打赏
举报
回复
[Quote=引用 13 楼 zhqyzhqychn 的回复:]
我的意思是说,如果多个线程访问同一个信号量不需要互斥吧,呵呵,看来是不需要的
[/Quote]
什么是信号量?汗。。。
zhqyzhqychn
2010-07-21
打赏
举报
回复
[Quote=引用 9 楼 feiyinzilgd 的回复:]
引用 8 楼 zhqyzhqychn 的回复:
引用 4 楼 carey1986 的回复:
进程间的信号量和线程间的信号量不是一回事啊
我的信号量 是用来做多进程互斥的,所以不知道如果每个进程有多个线程使用的话会不会需要在另外线程间互斥
那就看你的线程之间需不需要互斥。如果需要互斥,那就得加上
[/Quote]
我的意思是说,如果多个线程访问同一个信号量不需要互斥吧,呵呵,看来是不需要的
Wenxy1
2010-07-21
打赏
举报
回复
可以,见经典的文章:
Posix线程编程指南(3)
http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part3/
wwwunix
2010-07-21
打赏
举报
回复
[Quote=引用 6 楼 zhqyzhqychn 的回复:]
引用 2 楼 wwwunix 的回复:
这个要看你的实际应用是什么样子的。如果线程中的资源和其他进程中的资源都是同一个临界资源则需要互斥。
有点好奇,如果这些进程和线程中的资源都是同样的临界资源的话。为什么不都采用线程?
我是进程间需要通过共享内存通讯,每个进程里有多个线程可以往共享内存读写,然后也可以有多个进程往里读写,我看有人说线程信号量和进程信号量不是一回事?
[/Quote]
信号量是系统全局的,其操作是原子的,由kernel实现。不管是在进程中或是在线程中,对这个信号量做了操作都会对其他的进程或线程产生作用。也就是说,你在一个进程/线程中使用了P操作,则其他进程/线程都会等待。直到原来的那个进程/线程执行了V操作。
【嵌入式软件工程师面经】Linux
多进程
与
多线程
准备
多线程
和
多进程
的面试问题时,深入理解每个问题的核心概念以及它们在实际系统中的应用是非常重要的。实际场景中的问题通常比理论上更为复杂,因此理解如何在特定的上下文中应用这些概念至关重要,当准备这类面试问题时,最好的方法是结合理论知识与实践经验,尝试举一些实际应用中的例子来展示你如何解决
多线程
和
多进程
相关的问题。此外,理解Linux内核的工作原理和相关的系统调用也非常重要
C/C++
信号量
,
互斥
锁使用实例,内含
多线程
,
多进程
使用代码(带例子)
**
信号量
,
互斥
锁使用实例,内含
多线程
,
多进程
使用代码(带例子) ** WIN32的使用例子
信号量
: 单线程情况下,只能获取一次锁,
信号量
的nCount计数会减一,所以再次获取
信号量
会导致自锁。 每次使用都必须进行Release进行释放 用到函数 CreateSemaphore OpenSemaphore WaitForSingleObject WaitForMultipleObjects(个......
【
多线程
】临界区,
互斥
量,
信号量
,条件变量,事件以及区别
1.
互斥
量(
互斥
锁)和
信号量
多任务间同步的方式包括关中断,调度器上锁,
互斥
量(mutex),
信号量
,消息队列几种, 其中
互斥
量和
信号量
使用使用方式相近,连概念和实现都有些近似, 所以没有扎实操作系统背景知识的同学常常分不清出他们的区别,容易混淆, 下面简单分析以下. 1.
互斥
量(
互斥
量其实可以理解为一个简化的
信号量
,它只有两种状态:0和1) 互相斥量是管理临界资源的一种有效手段......
C
信号量
与
互斥
锁的区别
“
信号量
用在
多线程
多任务同步的,一个线程完成了某一个动作就通过
信号量
告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里)。而
互斥
锁是用在
多线程
多任务
互斥
的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这 个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和
信号量
会同时使用的” 也就是说,信
linux
多线程
信号量
和
互斥
锁的使用
“
信号量
用在
多线程
多任务同步的,一个线程完成了某一个动作就通过
信号量
告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里)。而
互斥
锁是用在
多线程
多任务
互斥
的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这 个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和
信号量
会同时使用的” 也就是说,信
Linux/Unix社区
23,224
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章