信号量可以用于多进程多线程同时互斥不?

zhqyzhqychn 2010-07-21 11:24:44
多个进程需要信号量来互斥,每个进程内又有多个线程,信号量在一个进程的多个线程之间需要在加线程锁互斥吗
...全文
754 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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操作。

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧