Kritische Abschnitte sind keine Kernel-Objekte. Sie sind nicht mit einem Handle identifiziert. Sie können nur verwendet werden, um die Threads zu synchronisieren, die zu demselben Prozess gehören. Sie können nicht für die Synchronisierung über den gesamten Prozess hinweg verwendet werden.
CSingleLock (ich nehme an, dass Sie dies als eine Sperre in diesem Zusammenhang beziehen) ist eine Wrapper-Klasse mit RAII Konzept. Es hilft Ihnen, das Thread-Synchronisationsobjekt (in seinem Konstruktor) zu erhalten und Lock and Unlock API auf einfache Weise aufzurufen. (alle internen Details werden ausgeblendet, welche Synchronisationsobjekte verwendet werden).
CSingleLock kann bei Verwendung mit kritischen Abschnitten nicht prozessübergreifend verwendet werden. Wo als Mutex kann für diesen Zweck verwendet werden.
Wenn ein Thread Mutex erwirbt und keine anderen Threads den Mutex abrufen können, wird der Status des Mutex als nicht signiert angegeben. Wenn der Mutex verfügbar ist und keine Threads erfasst wurden, befindet er sich im Signalled-Status.
Sie sind die gleiche Sache für mich, meine Vermutung ist, dass Sie eine Bibliothek verwenden, die einen Unterschied zwischen den drei (Win32?) Macht. –
Willst du sagen, dass Locks wie CSingleLock auch Thread-Synchronisation unterstützt, wenn es darum geht, Prozesse übergreifend zu führen. Ich dachte, nur Mutex unterstützt das. Bitte korrigieren Sie mich, wenn ich falsch liege – ckv