std::recursive_mutex::lock
![]() |
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
void lock(); |
(seit C++11) | |
Sperrt den Mutex. Wenn ein anderer Thread bereits den Mutex gesperrt hat, wird die Ausführung des Threads solange blockiert, bis der Mutex gesperrt werden kann.
A thread may call lock
on a recursive mutex repeatedly. Ownership will only be released after the thread makes a matching number of calls to unlock
.
The maximum number of levels of ownership is unspecified. An exception of type std::system_error will be thrown if this number is exceeded.
Inhaltsverzeichnis |
[Bearbeiten] Parameter
You can help to correct and verify the translation. Click here for instructions.
[Bearbeiten] Rückgabewert
You can help to correct and verify the translation. Click here for instructions.
[Bearbeiten] Ausnahmen
lock
der Erfüllung ihrer Vorgaben verhindern würde .lock
from meeting its specifications.You can help to correct and verify the translation. Click here for instructions.
[Bearbeiten] Beispiel
lock
und unlock
verwendet werden, um gemeinsam genutzte Daten zu schützen .
lock
and unlock
can be used to protect shared data.
You can help to correct and verify the translation. Click here for instructions.
#include <iostream> #include <chrono> #include <thread> #include <mutex> int g_num = 0; // protected by g_num_mutex std::mutex g_num_mutex; void slow_increment(int id) { for (int i = 0; i < 3; ++i) { g_num_mutex.lock(); ++g_num; std::cout << id << " => " << g_num << '\n'; g_num_mutex.unlock(); std::this_thread::sleep_for(std::chrono::seconds(1)); } } int main() { std::thread t1(slow_increment, 0); std::thread t2(slow_increment, 1); t1.join(); t2.join(); }
Possible output:
0 => 1 1 => 2 0 => 3 1 => 4 0 => 5 1 => 6
[Bearbeiten] Siehe auch
versucht den Mutex zu sperren und kehrt zurück, wenn der Mutex nicht verfügbar ist (öffentliche Elementfunktion) | |
entsperrt den Mutex (öffentliche Elementfunktion) |