スレッドをロックするときにQMutexLockerが動作しません。QMutexLockerがロックされていないQMutex
回答:
void foo() { // QMutexLocker(&mutex); // wrong, it will not just lock and unlock QMutexLocker locker(&mutex); // right, it will lock until the 'locker' scope ends ... }
スレッドをロックするときにQMutexLockerが動作しません。QMutexLockerがロックされていないQMutex
回答:
void foo() {
// QMutexLocker(&mutex); // wrong, it will not just lock and unlock
QMutexLocker locker(&mutex); // right, it will lock until the 'locker' scope ends
...
}
オフもちろん、これは間違っている:
QMutexLocker(&mutex);
それはロック一時的なミューテックスを作成し、文の終わりにロックを解除するので。ここで
:
QMutexLocker locker(&mutex);
はあなたがミューテックスをロックし、それがスコープの外に出たとき、それをアンロックロッカーという名前QMutexLocker
型のオブジェクトを、作成しています。
最初はエラーではありませんが、意図したものではありませんが、完全に有効です。一時的なロッカーが作成され、mutexをロックします。問題は、ステートメントの最後にロッカーがすぐに再び破棄され、mutexがロックされていないことです。 –
@FrankOsterfeldありがとうございました。私は何かを試しました。(このPCにはqtがインストールされていないので)失敗したので、上記をコンパイルできないと思いました。 –
あなたはそれについて質問がありますか?あなたはすでにそれを理解しているようです。 –