首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >POSIX命名的信号量能同步线程吗?

POSIX命名的信号量能同步线程吗?
EN

Stack Overflow用户
提问于 2015-06-05 15:17:24
回答 1查看 547关注 0票数 2

我正在寻找一种方法来同步Linux上的多个多线程进程。C++11风格的互斥只在单个进程内的线程之间运行,据我所知,flock并不相互排除同一个进程的线程。

因此,我想到了POSIX信号量。我知道未命名的信号量要么与线程相关,要么与进程相关,但两者都不相关。那名字的信号灯呢?很明显,它们同步进程,但是线程呢?我在文件中找不到明确的答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-05 16:54:06

是的,它们同步线程。

开放组基础规范第7期在通用概念中阐明了所有信号量同步线程,无论它们是POSIX风格(<semaphore.h>)还是SysV风格(<sys/sem.h>):

信号量锁操作将导致调用线程被阻塞并添加到等待信号量的一组线程中。

关于你所说的“未命名的信号量是线程或进程相关的,但不是两者”,我不太明白你的意思。如果在共享内存和显式初始化为"pshared“中分配未命名的信号量,则可以在(父-子)进程之间共享未命名的信号量。但是,进程共享与否,未命名的信号量会同步单个线程。

(无论其价值如何,POSIX互斥对象也可以是在进程之间共享。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30670120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档