condition_variable事件notifyAndWait()

时间:2018-03-13 12:26:11

标签: c++ c++11

我有一个等待事件的循环。

我希望能够添加notifyAndWait()功能

我不确定如何将其添加到我当前的课程

class Event
{
public:

    Event() : _signalled(false) {}

    void notify()
    {
        std::unique_lock<std::mutex> lock(_mutex);
        _signalled = true;
        _condvar.notify_one();
    }

    void wait()
    {
        std::unique_lock<std::mutex> lock(_mutex);
        _condvar.wait(lock, [&] { return _signalled; }); // also takes care about spurious wakeup
        _signalled = false; // auto-reset semantics
    }

private:

    std::mutex _mutex;
    std::condition_variable _condvar;
    bool _signalled;
};

1 个答案:

答案 0 :(得分:0)

您可以使用相同的条件变量使用不同的标志将信号传回给调用线程。像这样:

droplevels(data.2)