Frage

In Windows-Umgebung ist boost der scoped Mutex WinAPI kritische Abschnitte, oder etwas anderes?

War es hilfreich?

Lösung

Die aktuelle Version von boost::mutex verwendet weder eine Win32 CRITICAL_SECTION, noch eine Win32 Mutex. Stattdessen verwendet es atomare Operationen und ein Win32-Ereignis für wartet blockiert.

Ältere Versionen (Boost 1.34.1 und vor) waren ein Wrapper um CRITICAL_SECTION unter Windows.

Im übrigen ist die Mutex selbst nicht scoped. Die boost::mutex::scoped_lock Art und in der letzten Versionen, boost::lock_guard<boost::mutex> und boost::unique_lock<boost::mutex> bietet RAH-Wrapper zum Sperren eines Mutex Sie nicht vergessen, um sicherzustellen, um sie zu entriegeln.

Die boost::lock_guard<> und boost::unique_lock<> Vorlagen arbeiten mit jeder Art mit lock() und unlock() Member-Funktionen, so dass Sie sie mit Interprozess mutexes verwenden können, falls gewünscht.

Andere Tipps

Win32 des CRITICAL_SECTION kann nur unter den Fäden von ein einzelner Prozess verwendet werden. Wenn Sie etwas zwischen Prozessen verwenden müssen, benötigen Sie einen Mutex. Boost sagt nichts über kritische Abschnitte so würde davon ausgehen, ich es mutexes verwendet wird.

"scoped" bedeutet nur, dass es einen Wrapper hat die RAII , um automatisch die Mutex zu entsperren am Ende eines bestimmten Umfangs.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top