【发布时间】:2021-06-07 00:26:29
【问题描述】:
我想在已锁定的互斥体上使用 boost::interprocess 条件变量。我已经使用mutex->lock(); 函数锁定了互斥锁,因此scoped_lock 并不适合我。 boost::interprocess 中是否有任何 API 可以在不使用 scoped_lock 的情况下等待条件变量?我正在寻找类似于以下的 API:
condition_variable.wait(mutex)
在上面的代码块中,互斥体已经被锁定,所以不需要scoped_lock。但是,上面的代码块不起作用,因为 boost 期望 lock 而不是 mutex 作为 `wait.我可以使用下面的函数调用在 pthread 中做同样的事情:
pthread_cond_wait(condition_variable, mutex)
【问题讨论】:
-
什么是[条件变量和互斥体的类型}(theboostcpplibraries.com/…)?
-
条件变量是
interprocess_condition,互斥体是interprocess_mutex。
标签: c++ boost shared-memory interprocess