std::timed_mutex::lock
Aus cppreference.com
< cpp | thread | timed mutex
![]() |
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.
Inhaltsverzeichnis |
[Bearbeiten] Parameter
(None)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[Bearbeiten] Rückgabewert
(None)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[Bearbeiten] Ausnahmen
Wirft std::system_error, wenn Fehler auftreten, einschließlich Fehler aus dem zugrunde liegenden Betriebssystem,
lock
der Erfüllung ihrer Vorgaben verhindern würde .Original:
Throws std::system_error when errors occur, including errors from the underlying operating system that would prevent
lock
from meeting its specifications.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Note
A program may deadlock if a thread that already owns a mutex
calls lock
on that mutex
. Alternatively, if an implementation can detect the deadlock, a resource_deadlock_would_occur
error condition may be observed.
[Bearbeiten] Beispiel
Dieses Beispiel zeigt, wie
lock
und unlock
verwendet werden, um gemeinsam genutzte Daten zu schützen .
Original:
This example shows how
lock
and unlock
can be used to protect shared data.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
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) | |
versucht, den Mutex zu sperren, kehrt zurück, wenn der Mutex hat been unavailable für das angegebene Timeout-Dauer Original: tries to lock the mutex, returns if the mutex has been unavailable for the specified timeout duration The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
versucht, den Mutex verriegeln, zurückgibt, wenn der Mutex hat been unavailable bis bestimmten Zeitpunkt erreicht worden ist Original: tries to lock the mutex, returns if the mutex has been unavailable until specified time point has been reached The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
entsperrt den Mutex (öffentliche Elementfunktion) |