<mutex>
클래스, 및 ; 템플릿 lock_guard
unique_lock
및 ; 및 recursive_timed_mutex
상호 배제 코드 영역을 정의하는 지원 형식 및 함수를 정의하는 표준 헤더 <mutex>
를 포함합니다. timed_mutex
recursive_mutex
mutex
Warning
Visual Studio 2015부터 C++ 표준 라이브러리 동기화 유형은 Windows 동기화 기본 형식을 기반으로 하며 더 이상 ConcRT를 사용하지 않습니다(대상 플랫폼이 Windows XP인 경우 제외). 정의된 <mutex>
형식은 ConcRT 형식 또는 함수와 함께 사용하면 안 됩니다.
요구 사항
머리글: <mutex>
네임스페이스: std
설명
참고 항목
사용하여 /clr
컴파일되는 코드에서는 이 헤더가 차단됩니다.
mutex
및 recursive_mutex
클래스는 뮤텍스 형식입니다. 뮤텍스 형식에는 예외를 throw하지 않는 기본 생성자 및 소멸자가 있습니다. 이러한 개체에는 여러 스레드가 동일한 개체를 잠그려고 할 때 상호 배제하는 메서드가 있습니다. 특히, 뮤텍스 형식에는 lock
, try_lock
및 unlock
메서드가 포함되어 있습니다.
스레드가 뮤텍스의 소유권을 가져올 때까지
lock
메서드가 호출 스레드를 차단합니다. 반환 값은 무시됩니다.try_lock
메서드는 차단하지 않고 뮤텍스에 대한 소유권을 가져오려고 시도합니다. 메서드가 소유권을 가져오면 반환 값이bool
로 변환되어true
가 되지만 그렇지 않은 경우에는false
입니다.unlock
메서드는 호출 스레드에서 뮤텍스의 소유권을 해제합니다.
뮤텍스 형식을 형식 인수로 사용하여 템플릿 lock_guard
및 unique_lock
을 인스턴스화할 수 있습니다. 이러한 형식의 개체를 템플릿condition_variable_any
의 대기 멤버 함수에 대한 인수로 Lock
사용할 수 있습니다.
시간이 지정된 뮤텍스 형식은 뮤텍스 형식에 대한 요구 사항을 충족합니다. 또한 try_lock_for
및 try_lock_until
메서드가 있습니다. 이러한 메서드는 인수 하나를 사용하여 호출할 수 있어야 하고 bool
로 변환할 수 있는 형식을 반환해야 합니다. 시간이 지정된 뮤텍스 형식은 추가 인수 모두에 기본값이 있는 경우 이러한 인수를 사용하여 함수를 정의할 수 있습니다.
메서드는
try_lock_for
형식이 인스턴스화chrono::duration
인 인수 하나를Rel_time
사용하여 호출할 수 있어야 합니다. 이 메서드에서 뮤텍스의 소유권을 가져오려고 시도하지만 성공 여부에 관계없이Rel_time
으로 지정한 시간 이내에 반환합니다. 메서드가 소유권을 가져오면 반환 값이true
로 변환되지만 그렇지 않은 경우 반환 값은false
로 변환됩니다.메서드는
try_lock_until
형식이 인스턴스화chrono::time_point
인 인수 하나를Abs_time
사용하여 호출할 수 있어야 합니다. 이 메서드에서 뮤텍스의 소유권을 가져오려고 시도하지만 성공 여부에 관계없이Abs_time
으로 지정한 시간 이내에 반환합니다. 메서드가 소유권을 가져오면 반환 값이true
로 변환되지만 그렇지 않은 경우 반환 값은false
로 변환됩니다.
뮤텍스 형식은 잠금 가능 형식이라고도 합니다. 멤버 함수try_lock
를 제공하지 않으면 기본 잠금 가능 형식입니다. 시간 제한 뮤텍스 형식을 시간 제한 잠금 가능 형식이라고합니다. 지정된 시간 동안 또는 뮤텍스에 대한 잠금이 획득될 때까지 시간 제한 잠금 가능 형식이 차단됩니다.
멤버
클래스
이름 | 설명 |
---|---|
lock_guard 클래스 |
소멸자가 뮤텍스의 잠금을 해제하는 개체를 만들기 위해 인스턴스화할 수 있는 템플릿을 나타냅니다. |
mutex 클래스(C++ 표준 라이브러리) |
뮤텍스 형식을 나타냅니다. 이 형식의 개체를 사용하면 프로그램 내에서 상호 배제를 강제로 수행할 수 있습니다. |
recursive_mutex 클래스 |
뮤텍스 형식을 나타냅니다. 클래스와 mutex 달리 이미 잠긴 개체에 대해 잠금 메서드를 호출하는 동작은 잘 정의되어 있습니다. |
recursive_timed_mutex 클래스 |
이러한 형식의 개체를 사용하면 프로그램 내에서 시간이 제한된 차단이 있는 상호 배제를 강제로 수행할 수 있습니다. 달리 timed_mutex 개체에 대한 recursive_timed_mutex 잠금 메서드를 호출하는 효과는 잘 정의되어 있습니다. |
scoped_lock 클래스 |
|
timed_mutex 클래스 |
이러한 형식의 개체를 사용하면 프로그램 내에서 시간이 제한된 차단이 있는 상호 배제를 강제로 수행할 수 있습니다. |
unique_lock 클래스 |
뮤텍스의 잠금 및 잠금 해제를 관리하는 개체를 만들기 위해 인스턴스화할 수 있는 템플릿을 나타냅니다. |
함수
속성 | 설명 |
---|---|
call_once |
지정된 호출 가능 개체를 실행 중 정확하게 한 번 호출할 수 있는 메커니즘을 제공합니다. |
lock |
교착 상태가 발생하지 않고 모든 인수를 잠그려고 시도합니다. |
swap |
두 mutex 개체 x y 의 내부 상태를 교환하려고 합니다. |
try_lock |
잠금 가능한 개체를 잠그려고 시도합니다. 즉시 반환합니다. |
구조체
속성 | 설명 |
---|---|
adopt_lock_t 구조 |
adopt_lock 을 정의하는 데 사용되는 형식을 나타냅니다. |
defer_lock_t 구조 |
unique_lock 의 오버로드된 생성자 중 하나를 선택하는 데 사용되는 defer_lock 개체를 정의하는 형식을 나타냅니다. |
once_flag 구조 |
실행 스레드가 여러 개 있는 경우에도 초기화 코드를 한 번만 호출하기 위해 템플릿 함수 call_once 와 함께 사용되는 struct 나타냅니다. |
try_to_lock_t 구조 |
try_to_lock 개체를 정의하고 unique_lock 의 오버로드된 생성자 중 하나를 선택하는 데 사용되는 struct 를 나타냅니다. |
변수
속성 | 설명 |
---|---|
adopt_lock |
생성자에 전달되고 생성자에 lock_guard unique_lock 전달되는 개체가 잠겨 있음을 mutex 나타내기 위해 생성자에 전달할 수 있는 개체를 나타냅니다. |
defer_lock |
생성자에 전달할 수 있는 개체를 나타내며, 생성자가 unique_lock 전달되는 개체도 잠그 mutex 지 않아야 함을 나타냅니다. |
try_to_lock |
생성자가 unique_lock 차단 없이 전달되는 개체의 잠금을 해제 mutex 해야 함을 나타내기 위해 생성자에 전달할 수 있는 개체를 나타냅니다. |