2017-10-06 12 views
0

私は状態を有効にしてconcurentlyキューにマルチスレッドプログラムを持っているので、私はC++変更可能なミューテックス

のように、有効にして、キューの異なるmutexロックガードを使用する必要があります私は、怒鳴る

{std::lock_guard<std::mutex> lock_en(eventLogMutex);en = enable;} 

私の質問のように、ミューテックスのメソッドを使用します。

{ 
    std::lock_guard<std::mutex> lock_queue(eventLogMutex); 
    .... 
} 

{ 
    std::lock_guard<std::mutex> lock_en(eventLogMutex); 
    ... 
} 

感謝の

+0

[mcve] –

答えて

0

はい、そうすべきです。 lock_guardは、RAIIを使用してmutexをロックおよびロック解除します。スコープから外れると、mutexは自動的に解放されます。 lock_guardをメンバー変数にすると、それを使用することは無意味になります。可能な限り保護されたコードに最も近いスコープ内にlock_guardを定義する必要があります。ロックを実際に必要とする直前に初期化し、mutexを実行した直後にスコープから外してください。

関連する問題