Windows Semaphore 질문입니당.
windows에서 공유메모리와 함께 세마포어 사용하려는데
검색을 해봐도 리눅스 공유메모리와 세마포어 예제 위주로 나오네요.
일단 공유메모리 부분은 어느정도 된 것 같고
이제 세마포어만 하면 되는데 잘 안되네요.
Server
-----------------------------------------------------------------------------------------------------
HANDLE H_SERVER, semSERVER;
i_Map *imap;
H_SERVER=CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(i_Map), "test");
imap=(i_Map*)MapViewOfFile(H_SERVER, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(i_Map));
semSERVER=CreateSemaphore(NULL, 1, 10, "semtest"); if(semSERVER==NULL) printf("error");
----------------------------------------------------------------------------------------------------
Client
----------------------------------------------------------------------------------------------------
HANDLE hread, semCLIENT;
i_Map *imap;
hread=OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, "test");
imap=(i_Map*)MapViewOfFile(hread, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(i_Map));
semCLIENT=OpenSemaphore(SYNCHRONIZE, FALSE, "semtest"); if(semCLIENT==NULL) printf("error");
WaitForSingleObject(semCLIENT, INFINITE);
/* code
*/
ReleaseSemaphore(semCLIENT, 1, NULL);
----------------------------------------------------------------------------------------------------
WaitforSigngleObject()에서 계속 멈춰있는데 왜그럴까요?
그래서 시간을 무한대 말고 직접 주면 동작은 되는데...
세마포어 작동원리는 알겠는데 코드에서 막히네요...
댓글 달기