Boost 是否有可以存储在Windows共享内存中的条件变量和互斥体的健壮实现?

Boost 是否有可以存储在Windows共享内存中的条件变量和互斥体的健壮实现?,boost,mutex,interprocess,Boost,Mutex,Interprocess,如前所述,如果持有互斥锁的进程崩溃,使用boost的进程间互斥锁和进程间条件变量可能会导致死锁。 这是因为boost的互斥体不是内核对象,因此在持有它的进程退出时不会自动释放。 boost中是否有方法将进程间条件变量与调用CreateMutex返回的互斥体一起使用 只需直接使用CreateSemaphore()即可跨多个进程实现condvar。您不需要使用Boost condvars。Windows提供了一组非常丰富的定义良好、相当正确、命名为机器范围的同步对象。使用它们。只需直接使用Creat

如前所述,如果持有互斥锁的进程崩溃,使用boost的进程间互斥锁和进程间条件变量可能会导致死锁。
这是因为boost的互斥体不是内核对象,因此在持有它的进程退出时不会自动释放。
boost中是否有方法将进程间条件变量与调用CreateMutex返回的互斥体一起使用

只需直接使用
CreateSemaphore()
即可跨多个进程实现condvar。您不需要使用Boost condvars。Windows提供了一组非常丰富的定义良好、相当正确、命名为机器范围的同步对象。使用它们。

只需直接使用
CreateSemaphore()
即可跨多个进程实现condvar。您不需要使用Boost condvars。Windows提供了一组非常丰富的定义良好、相当正确、命名为机器范围的同步对象。请改用它们。

请参阅“谢谢”中的指针。不处理其中一个进程中的崩溃的进程间机制?我本以为boost.TBH会更好,它的应用程序定义了应该是什么行为。除非操作系统支持健壮的IPC同步机制,我对此表示怀疑。如果是这样的话,就用这个…:(请参阅感谢指针。一个进程间机制不能处理其中一个进程中的崩溃?我本以为boost会更好。TBH它的应用程序定义了应该是什么行为。除非操作系统支持健壮的IPC同步机制,我对此表示怀疑。如果支持,请使用它…:(实现condvar并不是一件简单的事情,它所涉及的远不止调用CreateSemaphore.Boost.Thread的condvar实现是在win32上实现的,它使用的win32信号量与POSIX信号量不同。只需克隆该实现。应该在一小时内完成。实现condvar并不是一件简单的事情,它涉及到不仅仅是调用CreateSemaphore.Boost.Thread的condvar实现是在win32上实现的,它使用的win32信号量不像POSIX信号量那样被破坏。只需克隆该实现。应该在一小时内完成。