社区
Linux/Unix社区
帖子详情
信号量可以用于多进程多线程同时互斥不?
zhqyzhqychn
2010-07-21 11:24:44
多个进程需要信号量来互斥,每个进程内又有多个线程,信号量在一个进程的多个线程之间需要在加线程锁互斥吗
...全文
765
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操作。
下载
多线程
编程技术开发资料 高清完整PDF版
多线程
编程技术开发资料.pdf 个人收集电子书,仅用学习使用,不可
用于
商业用途,如有版权问题,请联系删除!
C语言中的
信号量
、进程同步与
互斥
、线程同步与
互斥
详解
在C语言中,
信号量
是一种
用于
多线程
或进程同步的机制,主要
用于
解决并发问题,确保多个线程或进程对共享资源的正确访问。它在
多进程
和
多线程
编程中扮演重要角色,能有效防止竞态条件和数据不一致。此外,
多线程
和
多进程
编程中的同步与
互斥
问题也是并发编程中必须面对的核心挑战。本文将详细介绍
信号量
及其应用,并展示如何通过
信号量
、
互斥
锁、条件变量等机制进行线程和进程间的同步与
互斥
。
Linux
多进程
、线程间通信:共享内存、
信号量
、管道、
互斥
锁
在中编写一应用程序,该程序包含三个进程,每个进程中包含两个线程,采用共享内存、
信号量
、管道等通信方式实现进程间的通信、同步、
互斥
操作。文章末尾附全部代码~(1)创建两个有名
信号量
sem_read和sem_write,一个
用于
读取共享内容,一个
用于
写入。是在程序使用的变量名,用来操作
信号量
的描述符。是系统中标识
信号量
的名字,
用于
的
信号量
通信和同步。(4)因为在该程序中,
信号量
是在父进程中创建的,所以所有的子进程和线程都可以直接用sem_read来使用
信号量
。它们共享父进程创建的资源(
同步与
互斥
之
信号量
信号量
广泛
用于
进程或线程间的同步和
互斥
,
信号量
本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。当
信号量
值大于 0 时,则可以访问,否则将阻塞。
信号量
是一种
用于
控制进程或线程同步和
互斥
的机制。它通常由一个计数器和一组等待的进程或线程组成。当进程或线程需要访问共享资源时,它会尝试获取一个
信号量
。如果
信号量
的计数器大于0,则进程或线程可以获得
信号量
并继续执行。否则,进程或线程将被阻塞,直到有
信号量
可用。PV 原语是对
信号量
的操作,一次 P 操作使
信号量
减1,一次 V 操作使
信号量
加1。
多线程
(3)临界区,
互斥
量和
信号量
的区别
Linux
多线程
(3)临界区,
互斥
量和
信号量
的区别1 临界区,
互斥
量和
信号量
使用范围2
互斥
量和
信号量
的区别2.1
互斥
量
用于
线程的
互斥
,
信号量
用于
线程的同步2.2
互斥
量值只能为0或1,
信号量
值可以为非负整数。 1 临界区,
互斥
量和
信号量
使用范围
信号量
:可以被任何进程,任何线程获取和释放
互斥
量:不限进程,但是哪个线程获取,哪个线程释放 临界区:仅限于本进程使用 2
互斥
量和
信号量
的区别 2....
Linux/Unix社区
23,220
社区成员
74,543
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章