다음을 통해 공유


동기화 개체

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

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

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

 

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

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

 

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

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