C++11的条件变量能用于同步进程吗?

3
我正在尝试学习C++11的std::condition_variable。我已经阅读了cppreference.comcplusplus.com上的文章,以及C++0x has no semaphores? How to synchronize threads?。我的问题是:使用std::mutex和std::condition_variable创建的“信号量”(请参见C++0x has no semaphores? How to synchronize threads?中的答案)是否可以像posix命名信号量一样用于进程间同步?我不清楚是否能够实现这种功能,因为我没有看到在创建这些对象时使用可共享的信息,例如名称。
2个回答

4
不,它们旨在同步一个进程内的线程,而不是进程之间。
通过使用共享文件来实现进程间通信。进程间互斥或共享内存只是一个文件(例如在您的临时文件夹中创建),用于在两个进程之间交换信息(数据,锁)。boost::interprocess提供了一个很好的实现(它不需要任何链接,代码是即时编译的,您只需要包含它)。
要同步进程,您应该查看boost::interprocess。它提供了同步机制。它提供了进程间信号量。

在我的原始问题中应该同时问这个问题,但是:看起来std::condition_variable似乎也不能像计数信号量一样使用,对吗?我看到它使用了std::unique_lockstd::mutex,所以似乎只能用作二进制信号量,是吧? - StoneThrow
@StoneThrow:我会说是的,但你应该提出一个单独的问题来得到明确的答案。 - jpo38

1

标准C++中最接近进程间通信(IPC)的是文件IO。

标准C++中没有内存IPC。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接