다음을 통해 공유


<mutex>

클래스, 및 ; 템플릿 lock_guard unique_lock및 ; 및 recursive_timed_mutex상호 배제 코드 영역을 정의하는 지원 형식 및 함수를 정의하는 표준 헤더 <mutex> 를 포함합니다. timed_mutexrecursive_mutexmutex

Warning

Visual Studio 2015부터 C++ 표준 라이브러리 동기화 유형은 Windows 동기화 기본 형식을 기반으로 하며 더 이상 ConcRT를 사용하지 않습니다(대상 플랫폼이 Windows XP인 경우 제외). 정의된 <mutex> 형식은 ConcRT 형식 또는 함수와 함께 사용하면 안 됩니다.

요구 사항

머리글: <mutex>

네임스페이스: std

설명

참고 항목

사용하여 /clr컴파일되는 코드에서는 이 헤더가 차단됩니다.

mutexrecursive_mutex 클래스는 뮤텍스 형식입니다. 뮤텍스 형식에는 예외를 throw하지 않는 기본 생성자 및 소멸자가 있습니다. 이러한 개체에는 여러 스레드가 동일한 개체를 잠그려고 할 때 상호 배제하는 메서드가 있습니다. 특히, 뮤텍스 형식에는 lock, try_lockunlock 메서드가 포함되어 있습니다.

  • 스레드가 뮤텍스의 소유권을 가져올 때까지 lock 메서드가 호출 스레드를 차단합니다. 반환 값은 무시됩니다.

  • try_lock 메서드는 차단하지 않고 뮤텍스에 대한 소유권을 가져오려고 시도합니다. 메서드가 소유권을 가져오면 반환 값이 bool로 변환되어 true가 되지만 그렇지 않은 경우에는 false입니다.

  • unlock 메서드는 호출 스레드에서 뮤텍스의 소유권을 해제합니다.

뮤텍스 형식을 형식 인수로 사용하여 템플릿 lock_guardunique_lock을 인스턴스화할 수 있습니다. 이러한 형식의 개체를 템플릿condition_variable_any의 대기 멤버 함수에 대한 인수로 Lock 사용할 수 있습니다.

시간이 지정된 뮤텍스 형식은 뮤텍스 형식에 대한 요구 사항을 충족합니다. 또한 try_lock_fortry_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 해야 함을 나타내기 위해 생성자에 전달할 수 있는 개체를 나타냅니다.

참고 항목

헤더 파일 참조