동기화 개체
동기화 개체는 여러 스레드의 실행을 조정하기 위해 대기 함수 중 하나에서 핸들을 지정할 수 있는 개체입니다. 둘 이상의 프로세스는 동일한 동기화 개체에 대한 핸들을 가질 수 있으므로 프로세스 간 동기화가 가능합니다.
다음 개체 형식은 동기화 전용으로 제공됩니다.
형식 | Description |
---|---|
이벤트 | 하나 이상의 대기 중인 스레드에 이벤트가 발생했음을 알립니다. 자세한 내용은 이벤트 개체를 참조하세요. |
Mutex | 한 번에 하나의 스레드만 소유할 수 있으므로 스레드가 공유 리소스에 대한 상호 배타적 액세스를 조정할 수 있습니다. 자세한 내용은 뮤텍스 개체를 참조하세요. |
세마포 | 0에서 일부 최대값 사이의 개수를 유지 관리하여 공유 리소스에 동시에 액세스하는 스레드 수를 제한합니다. 자세한 내용은 세마포 개체를 참조하세요. |
대기 가능한 타이머 | 하나 이상의 대기 스레드에 지정된 시간이 도착했음을 알 수 있습니다. 자세한 내용은 대기 가능한 타이머 개체를 참조하세요. |
다른 용도로 사용할 수 있지만 다음 개체를 동기화에 사용할 수도 있습니다.
개체 | Description |
---|---|
변경 알림 | FindFirstChangeNotification 함수에서 만든 상태는 지정된 디렉터리 또는 디렉터리 트리 내에서 지정된 유형의 변경이 발생할 때 신호로 설정됩니다. 자세한 내용은 디렉터리 변경 알림 가져오기를 참조하세요. |
콘솔 입력 | 콘솔을 만들 때 생성됩니다. 콘솔 입력에 대한 핸들은 CONIN$을 지정할 때 CreateFile 함수 또는 GetStdHandle 함수에 의해 반환됩니다. 콘솔의 입력 버퍼에 읽지 않은 입력이 있을 때 해당 상태가 신호로 설정되고 입력 버퍼가 비어 있을 때는 서명되지 않음으로 설정됩니다. 콘솔에 대한 자세한 내용은 문자 모드 애플리케이션을 참조하세요. |
작업 | CreateJobObject 함수를 호출하여 만듭니다. 지정된 작업 종료 시간 제한을 초과했기 때문에 모든 프로세스가 종료될 때 작업 개체의 상태가 신호로 설정됩니다. 작업 개체에 대한 자세한 내용은 작업 개체를 참조하세요. |
메모리 리소스 알림 | CreateMemoryResourceNotification 함수에 의해 생성됩니다. 해당 상태는 실제 메모리 내에서 지정된 유형의 변경이 발생할 때 신호로 설정됩니다. 메모리에 대한 자세한 내용은 메모리 관리를 참조하세요. |
Process | CreateProcess 함수를 호출하여 만듭니다. 프로세스가 실행되는 동안 해당 상태는 서명되지 않은 상태로 설정되고 프로세스가 종료될 때 신호로 설정됩니다. 프로세스에 대한 자세한 내용은 프로세스 및 스레드를 참조하세요. |
스레드 | CreateProcess, CreateThread 또는 CreateRemoteThread 함수를 호출하여 새 스레드를 만들 때 생성됩니다. 스레드가 실행되는 동안 해당 상태는 서명되지 않은 상태로 설정되고 스레드가 종료될 때 신호로 설정됩니다. 스레드에 대한 자세한 내용은 프로세스 및 스레드를 참조하세요. |
경우에 따라 파일, 명명된 파이프 또는 통신 디바이스를 동기화 개체로 사용할 수도 있습니다. 그러나 이 목적을 위해 사용하는 것은 권장되지 않습니다. 대신 비동기 I/O를 사용하고 OVERLAPPED 구조체에 설정된 이벤트 개체를 기다립니다. 동일한 파일, 명명된 파이프 또는 통신 디바이스에서 여러 개의 동시 겹치는 작업이 수행될 때 발생할 수 있는 혼동으로 인해 이벤트 개체를 사용하는 것이 안전합니다. 이 상황에서는 어떤 연산으로 인해 개체의 상태가 신호를 받을지 알 수 없습니다.
파일, 명명된 파이프 또는 통신에 대한 I/O 작업에 대한 자세한 내용은 동기화 및 겹치는 입력 및 출력을 참조하세요.