저는 현재 설계중인 IPC 시스템에 여러 프로세스가 있습니다. 각 프로세스는 자체 메모리 영역으로 FileMapping
및 MapViewOfFile
을 만듭니다. 또한 각 프로세스는 이미 생성 한 FileMapping
및 MapViewOfFile
을 관리하는 두 개의 세마포를 만듭니다. Windows 핸들은 모든 참조가 릴리스 될 때까지 대기합니다.
ProcessA
는FileMapping
,MapViewOfFile
두 세마포어를 생성한다.ProcessB
및ProcessC
은ProcessA
과 유사합니다.ProcessA
은ProcessB
에게 뭔가를 보내려고합니다.FileMapping
및MapViewOfFile
에 연결하고ProcessB
의 두 세마포를 연결하여 보내려는 모든 내용을 보냅니다.ProcessB
은 통신을 다시 열려고합니다.FileMapping
및MapViewOfFile
및 두 개의 세마포를 닫습니다. 프로세스는A
및C
으로 종료 메시지를 보냅니다. 프로세스A
및C
이 닫기 메시지를 수신하면 핸들은FileMapping
,MapViewOfFile
및ProcessB
과 연결된 두 개의 세마포를 닫습니다.ProcessB
모든 핸들이 닫히고 다시 열려고합니다.MapViewOfFile
을 만들려고하면A
및C
프로세스가 아직 핸들을 닫지 않아ProcessB
이되지 않습니다. 이ProcessB
자신의 핸들을 닫습니다 프로세스 A와 C에 대한 시간을 제공하기 위해 폐쇄 될 때
는 지금 (임시 수정으로), 나는이 100ms에 대한 ProcessB
잠을시키고있다. 그러나, 나는 수면을 포함하지 않는 해결책을 원합니다.
핸들의 (FileMapping
, MapViewOfFile
두 세마포어)에 모든 참조가 다른 모든 프로세스에 의해 출시되면 알 수 ProcessB
위한 방법이 있나요?있는 경우 어떻게 기다려야하나요?
** 모든 핸들 참조 ** 여기에 귀하가 의미하는 바는 무엇입니까? – RbMm
Microsoft의 설명서에 따르면 개체는 핸들에 대한 모든 참조가 닫힌 경우에만 닫힙니다. 객체에서'CloseHandle'을 호출하면, 그 객체에 대한 참조의 수만 감소합니다. 참조 카운트가 '0'에 도달하면 객체가 닫히고 다시 생성 할 수 있습니다. 참조 횟수를 확인할 수있는 방법이 있는지 알고 싶습니다. – Everyone
아니요, 일반적인 말로 표현하면 어떻게 구현합니까? – RbMm