gpt4 book ai didi

multithreading - POSIX命名信号量可以同步线程吗?

转载 作者:行者123 更新时间:2023-12-03 13:04:38 25 4
gpt4 key购买 nike

我正在寻找一种在Linux上同步多个多线程进程的方法。
C++ 11样式的互斥仅在单个进程中的线程之间运行,
据我所知,flock不会相互排斥同一进程的线程。

因此,我正在考虑POSIX信号灯。
我知道未命名的信号量与线程或进程相关,但不是两者都相关。
那么命名信号量呢?显然,它们使进程同步,但是线程呢?我在文档中找不到明确的明确答案。

最佳答案

是的,它们同步线程。

开放组基础规范第7期在一般概念下澄清了所有semaphores synchronize threads,无论它们是POSIX样式(<semaphore.h>)还是SysV样式(<sys/sem.h>):

[T]the semaphore lock operation shall cause the calling thread to be blocked and added to the set of threads awaiting the semaphore



关于您的说法“未命名的信号量与线程或进程相关,但不与线程相关”,我不太了解您的意思。如果未命名的信号量分配在共享内存和 explicitly initialized as "pshared"中,则它们可以在(父子)进程之间共享。但是,无论是否共享进程,未命名的信号量都会同步各个线程。

(对于它的值(value),POSIX互斥体也可以 be shared between processes。)

关于multithreading - POSIX命名信号量可以同步线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30670120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com