std::recursive_mutex:: try_lock
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Locking | ||||
|
recursive_mutex::try_lock
|
||||
| Native handle | ||||
|
bool
try_lock
(
)
noexcept
;
|
(C++11 이후) | |
뮤텍스를 잠그려고 시도합니다. 즉시 반환됩니다. 잠금 획득에 성공하면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
이 함수는 허위로 실패할 수 있으며, 다른 스레드에 의해 현재 뮤텍스가 잠겨 있지 않은 경우에도 false 를 반환할 수 있습니다.
스레드는 재귀적 뮤텍스에서
try_lock
을 반복적으로 호출할 수 있습니다.
try_lock
호출이 성공할 때마다 소유권 카운트가 증가합니다: 뮤텍스는 스레드가
unlock
을 해당 횟수만큼 호출한 후에만 해제됩니다.
소유권의 최대 계층 수는 명시되어 있지 않습니다. 이 수를 초과할 경우
try_lock
호출은
false
를 반환합니다.
동일한 뮤텍스에 대한 이전 unlock() 연산은 이 연산이 true 를 반환할 경우 (이 연산과) 동기화됩니다 ( std::memory_order 에 정의된 대로). 이 연산이 false 를 반환할 경우 이전 lock() 연산은 이 연산과 동기화되지 않습니다.
목차 |
매개변수
(없음)
반환값
true 락이 성공적으로 획득된 경우, 그렇지 않으면 false .
예외
아무것도 던지지 않습니다.
예제
#include <iostream> #include <mutex> int main() { std::recursive_mutex test; if (test.try_lock()) { std::cout << "lock acquired\n"; test.unlock(); } else std::cout << "lock not acquired\n"; test.lock(); // non-recursive mutex would return false from try_lock now if (test.try_lock()) { std::cout << "lock acquired\n"; test.unlock(); } else std::cout << "lock not acquired\n"; test.unlock(); }
출력:
lock acquired lock acquired
참고 항목
|
뮤텍스를 잠금, 뮤텍스를 사용할 수 없는 경우 차단됨
(public member function) |
|
|
뮤텍스를 잠금 해제
(public member function) |
|
|
C documentation
for
mtx_trylock
|
|