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契約確保完全跨平臺兼容 –