Verwenden Sie std :: lock_guard mit try_lock

8

Gibt es eine Möglichkeit, dass ich std::lock_gaurd anweisen kann, try_lock anstelle von lock aufzurufen, wenn es den Mutex erwirbt?

Ich kann nur daran denken, std::adopt_lock :

zu verwenden %Vor%

Gibt es eine integrierte Lösung für mein Problem, anstatt die Sperre explizit zu übernehmen und dann lock_guard die Verantwortung für die Freigabe zu geben?

    
Mr. Anderson 29.11.2015, 08:31
quelle

1 Antwort

22

Eine grundlegende Entwurfsinvariante von lock_guard ist, dass sie immer die Sperre enthält. Dies minimiert den Overhead, da der Destruktor bedingungslos unlock() aufrufen kann und keinen zusätzlichen Status speichern muss.

Wenn Sie das try-to-lock-Verhalten benötigen, verwenden Sie unique_lock :

%Vor%     
T.C. 29.11.2015 09:49
quelle

Tags und Links