2017-10-06 14 views
0

Ich habe Programm Multi-Threading mit Freigabezustand und concurently Warteschlange, so werde ich dir die Mutex-Verfahren wieC++ Mutable Mutex

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

meine Frage verwenden, sollte ich verschiedene Mutex-Sperre Wache verwenden für aktivieren und Warteschlange, wie

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

und

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

des Thank

+0

Bitte geben Sie eine [mcve] –

Antwort

0

Ja, Sie sollten. A lock_guard verlässt sich auf RAII, um den Mutex zu sperren und zu entsperren - wenn er den Gültigkeitsbereich verlässt, wird der Mutex automatisch freigegeben. Wenn Sie die lock_guard eine Mitgliedsvariable machen, wird es sinnlos sein. Sie sollten die lock_guard in einem Bereich definieren, der dem geschützten Code am nächsten kommt - initialisieren Sie ihn direkt bevor Sie die Sperre tatsächlich benötigen, und lassen Sie ihn außerhalb des Bereichs liegen, nachdem Sie mit dem Mutex fertig sind.