std::recursive_timed_mutex::lock
Материал из cppreference.com
< cpp | thread | recursive timed mutex
| void lock(); |
(начиная с C++11) | |
Блокирует мьютекс. Если другой поток уже заблокировал мьютекс, вызов lock останавливает выполнение до получения блокировки.
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.
Содержание |
[править] Параметры
(нет)
[править] Возвращаемое значение
(нет)
[править] Исключения
Выбрасывает исключение std::system_error при возникновении ошибок, включая ошибки в операционной системе, которые препятствовали бы lock от выполнения своей спецификации.
[править] Пример
Этот пример показывает, как можно использовать lock и unlock для защиты разделяемых данных.
#include <iostream> #include <chrono> #include <thread> #include <mutex> int g_num = 0; // защищается 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(); }
Возможный вывод:
0 => 1 1 => 2 0 => 3 1 => 4 0 => 5 1 => 6
[править] См. также
| пытается заблокировать мьютекс, возвращается, если мьютекс не доступен (public функция-член) | |
| пытается заблокировать мьютекс, возвращается, если мьютекс имеет been unavailable за указанный период тайм-аута 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. (public функция-член) | |
| пытается заблокировать мьютекс, возвращается, если мьютекс имеет been unavailable до указанного момента времени была достигнута 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. (public функция-член) | |
| разблокирует мьютекс (public функция-член) | |