동기화 개체

동기화 개체는 여러 스레드의 실행을 조정하기 위해 대기 함수 중 하나에서 핸들을 지정할 수 있는 개체입니다. 둘 이상의 프로세스는 동일한 동기화 개체에 대한 핸들을 가질 수 있으므로 프로세스 간 동기화가 가능합니다.

다음 개체 형식은 동기화 전용으로 제공됩니다.

형식 Description
이벤트 하나 이상의 대기 중인 스레드에 이벤트가 발생했음을 알립니다. 자세한 내용은 이벤트 개체를 참조하세요.
Mutex 한 번에 하나의 스레드만 소유할 수 있으므로 스레드가 공유 리소스에 대한 상호 배타적 액세스를 조정할 수 있습니다. 자세한 내용은 뮤텍스 개체를 참조하세요.
세마포 0에서 일부 최대값 사이의 개수를 유지 관리하여 공유 리소스에 동시에 액세스하는 스레드 수를 제한합니다. 자세한 내용은 세마포 개체를 참조하세요.
대기 가능한 타이머 하나 이상의 대기 스레드에 지정된 시간이 도착했음을 알 수 있습니다. 자세한 내용은 대기 가능한 타이머 개체를 참조하세요.

 

다른 용도로 사용할 수 있지만 다음 개체를 동기화에 사용할 수도 있습니다.

개체 Description
변경 알림 FindFirstChangeNotification 함수에서 만든 상태는 지정된 디렉터리 또는 디렉터리 트리 내에서 지정된 유형의 변경이 발생할 때 신호로 설정됩니다. 자세한 내용은 디렉터리 변경 알림 가져오기를 참조하세요.
콘솔 입력 콘솔을 만들 때 생성됩니다. 콘솔 입력에 대한 핸들은 CONIN$을 지정할 때 CreateFile 함수 또는 GetStdHandle 함수에 의해 반환됩니다. 콘솔의 입력 버퍼에 읽지 않은 입력이 있을 때 해당 상태가 신호로 설정되고 입력 버퍼가 비어 있을 때는 서명되지 않음으로 설정됩니다. 콘솔에 대한 자세한 내용은 문자 모드 애플리케이션을 참조하세요.
작업 CreateJobObject 함수를 호출하여 만듭니다. 지정된 작업 종료 시간 제한을 초과했기 때문에 모든 프로세스가 종료될 때 작업 개체의 상태가 신호로 설정됩니다. 작업 개체에 대한 자세한 내용은 작업 개체를 참조하세요.
메모리 리소스 알림 CreateMemoryResourceNotification 함수에 의해 생성됩니다. 해당 상태는 실제 메모리 내에서 지정된 유형의 변경이 발생할 때 신호로 설정됩니다. 메모리에 대한 자세한 내용은 메모리 관리를 참조하세요.
Process CreateProcess 함수를 호출하여 만듭니다. 프로세스가 실행되는 동안 해당 상태는 서명되지 않은 상태로 설정되고 프로세스가 종료될 때 신호로 설정됩니다. 프로세스에 대한 자세한 내용은 프로세스 및 스레드를 참조하세요.
스레드 CreateProcess, CreateThread 또는 CreateRemoteThread 함수를 호출하여 새 스레드를 만들 때 생성됩니다. 스레드가 실행되는 동안 해당 상태는 서명되지 않은 상태로 설정되고 스레드가 종료될 때 신호로 설정됩니다. 스레드에 대한 자세한 내용은 프로세스 및 스레드를 참조하세요.

 

경우에 따라 파일, 명명된 파이프 또는 통신 디바이스를 동기화 개체로 사용할 수도 있습니다. 그러나 이 목적을 위해 사용하는 것은 권장되지 않습니다. 대신 비동기 I/O를 사용하고 OVERLAPPED 구조체에 설정된 이벤트 개체를 기다립니다. 동일한 파일, 명명된 파이프 또는 통신 디바이스에서 여러 개의 동시 겹치는 작업이 수행될 때 발생할 수 있는 혼동으로 인해 이벤트 개체를 사용하는 것이 안전합니다. 이 상황에서는 어떤 연산으로 인해 개체의 상태가 신호를 받을지 알 수 없습니다.

파일, 명명된 파이프 또는 통신에 대한 I/O 작업에 대한 자세한 내용은 동기화 및 겹치는 입력 및 출력을 참조하세요.