std::recursive_timed_mutex:: lock
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Locking | ||||
|
recursive_timed_mutex::lock
|
||||
| Native handle | ||||
|
void
lock
(
)
;
|
(C++11 이후) | |
뮤텍스를 잠급니다. 다른 스레드가 이미 뮤텍스를 잠근 경우,
lock
호출은 잠금이 획득될 때까지 실행을 차단합니다.
스레드는 재귀적 뮤텍스에서
lock
을 반복적으로 호출할 수 있습니다. 소유권은 스레드가
unlock
을 일치하는 횟수만큼 호출한 후에만 해제됩니다.
소유권의 최대 계층 수는 명시되어 있지 않습니다. 이 수치가 초과될 경우 std::system_error 타입의 예외가 발생합니다.
동일한 뮤텍스에 대한 이전 unlock() 연산들은 이 연산과 동기화됩니다 ( std::memory_order 에 정의된 대로).
목차 |
예외
오류가 발생하면
std::system_error
를 발생시킵니다. 여기에는
lock
이 명세를 충족하는 것을 방해하는 기본 운영 체제의 오류도 포함됩니다. 예외가 발생한 경우 뮤텍스는 잠기지 않습니다.
참고 사항
lock()
는 일반적으로 직접 호출되지 않습니다:
std::unique_lock
,
std::scoped_lock
, 그리고
std::lock_guard
가 배타적 잠금을 관리하는 데 사용됩니다.
예제
이 예제는
lock
과
unlock
이 공유 데이터를 보호하는 데 어떻게 사용될 수 있는지 보여줍니다.
#include <chrono> #include <iostream> #include <mutex> #include <thread> 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; // note, that the mutex also syncronizes the output std::cout << "id: " << id << ", g_num: " << g_num << '\n'; g_num_mutex.unlock(); std::this_thread::sleep_for(std::chrono::milliseconds(234)); } } int main() { std::thread t1{slow_increment, 0}; std::thread t2{slow_increment, 1}; t1.join(); t2.join(); }
가능한 출력:
id: 0, g_num: 1 id: 1, g_num: 2 id: 1, g_num: 3 id: 0, g_num: 4 id: 0, g_num: 5 id: 1, g_num: 6
참고 항목
|
뮤텍스를 잠그려 시도하며, 뮤텍스를 사용할 수 없는 경우 반환합니다
(public member function) |
|
|
뮤텍스를 잠그려 시도하며, 지정된 타임아웃 기간 동안
뮤텍스를 사용할 수 없는 경우 반환합니다 (public member function) |
|
|
뮤텍스를 잠그려 시도하며, 지정된 시간 점에 도달할 때까지
뮤텍스를 사용할 수 없는 경우 반환합니다 (public member function) |
|
|
뮤텍스를 해제합니다
(public member function) |
|
|
C documentation
for
mtx_lock
|
|