찾아보면 많이 있을 줄 알았는데, 의외로 찾기가 힘드네요.
미로에서 유저와 몇개의 NPC가
랜덤한 위치에서 생성되어 길을 찾는걸 쓰레드로 만들어 볼려고 합니다.
유저는 이동을 할 수도 있고, 안 할 수도 있습니다만,
NPC는 일정한 속도로 계속 길을 찾아 움직이게 할 생각입니다.
그런데 그냥 돌려봤더니 눈에 띌 정도로 처리속도의 차이가 있더군요.
유저의 이동속도(유저가 딴짓안하고 계속 움직일때 속도/딴짓해도 그정도 속도로 계속 이동)와
동기화를 시켜줘야 하는데 어떻게 하는지 모르겠습니다.
synchronize에 해법이 있을까 싶어서 한델을 뒤져봤지만
적절한 예시를 찾지는 못하겠네요. ^^;
4가지 방법이 있는데 CriticalSection, Mutex, Semaphore, event가 있습니다.
CriticalSection의 경우
InitializeCriticalSection, EnterCriticalSection, LeaveCriticalSection, DeleteCriticalSection
이 네가지를 사용합니다.
Mutex의 경우
CreateMutex, WaitForSingleObject, ReleaseMutex, CloseHandle이 네가지 함수를 사용하고
Semaphore의 경우
CreateSemaphore, WaitForSingleObject, ReleaseSemaphore, CloseHandle
Event의 경우
CreateEvent, SetEvent, CloseHandle을 사용합니다..
각 함수의 내용은 다행히 델파이 도움말에 있네요... ^^
과연 송시중님이 이 글을 읽으실지...