0
我正在写一些线程在Qt中,我不知道如何将谓词传递给我的条件变量,以防止虚假唤醒。将谓词传递给QWaitCondition?
工作液在C++:
std::mutex(mu);
std::condition_variable cond;
std::unique_lock<mutex> alpha_lock(mu);
cond.wait(alpha_lock, [](){ return //some condition;});
alpha_lock.unlock();
//Continue to do stuff...
的Qt相当于:
QMutex mu;
QWaitCondition cond;
QMutexLocker alpha_lock&(mu);
cond.wait(&mu, [](){return //some condition;})
错误:
"no matching member function for call to wait"
如何在这个Qt代码使用谓词任何想法?
哪里可以看到任何可以将回调传递给QaitCondition的文档?我没有看到任何东西。 http://doc.qt.io/qt-5/qwaitcondition.html我猜你只是在一个while循环中包装它。 while(!condition_to_test)qtwaitcondition.wait(); – xaxxon
真正的问题是:既然你有一个使用标准C++的工作解决方案,为什么要通过转码来使用Qt来限制自己?有没有理由不能使用你的工作C++解决方案? – IInspectable
@IInspectable这是一个桌面应用程序,因此使用Qt契约确保完全跨平台兼容 –