繁体   English   中英

为什么必须为boost :: condition_variable使用boost :: mutex?

[英]why must I have a boost::mutex for boost::condition_variable?

我有以下代码:其中m_event是boost :: condition_variable

        boost::scoped_lock dummy;
        boost::unique_lock<boost::scoped_lock> lock(dummy); // TODO: see if dummy is correct
        m_event.wait(lock, [this] () {
            return !this ->m_enqueue.empty();
        });

我真的不需要那个虚拟储物柜,我只是想让事件在特定的布尔条件下停止,我不明白吗?

为什么我被迫使用虚拟锁?

(PS代码效果很好。)

编辑:实际上,如果我理解正确,我在课堂上所拥有的就是boost :: mutex,让我们将其称为m_mtx和m_enqueue的明显插入器..因此,我正在相应地将实现更改为对m_lock进行锁定的锁插入程序只会做:

boost::mutex::scoped_lock<boost::mutex> guard(m_lock);

说得通?

timed_wait如果及时获得,则等待获得锁。

没有锁,它什么也做不了。

在我看来,您正在滥用timed_wait

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM