18. [pywin32] WaitForMultipleObjects 함수
pywin32/win32event2020. 9. 22. 00:19
int = WaitForMultipleObjects(handleList, bWaitAll , milliseconds )
WaitForSingleObjects가 하나의 이벤트 핸들에 대해서 대기를 한다면, 이 함수는 여러개의 이벤트 핸들에 대해서 대기를 할 수 있습니다.
인자로는 handleList : [PyHANDLE, ...], bWaitAll : bool, milliseconds : int 가 있습니다.
handleList는 PyHANDLES을 담은 리스트 입니다.
bWaitAll은 handleList의 모든 이벤트들이 셋트될 때까지 기다릴지 말지를 결정합니다.
- win32con.TRUE: handleList의 모든 이벤트가 셋트될 때까지 기다립니다.
- win32con.FALSE: handleList의 이벤트 중 하나만 셋트되면 대기를 해제합니다.
milliseconds: 몇 초를 대기할 지 정하는 시간입니다.
import win32event
import win32con
import win32api
evtHandle1 = win32event.CreateEvent(None, win32con.FALSE, win32con.FALSE, "evtTest1")
evtHandle2 = win32event.CreateEvent(None, win32con.FALSE, win32con.FALSE, "evtTest2")
evtHandle3 = win32event.CreateEvent(None, win32con.FALSE, win32con.FALSE, "evtTest3")
hList = [evtHandle1, evtHandle2, evtHandle3]
while True:
x = win32event.WaitForMultipleObjects(hList, win32con.FALSE, 3000)
if x == win32event.WAIT_OBJECT_0:
print(f"signaled #1")
elif x == win32event.WAIT_OBJECT_0 + 1:
print(f"signaled #2")
elif x == win32event.WAIT_OBJECT_0 + 2:
print(f"signaled #3")
elif x== win32event.WAIT_TIMEOUT:
print(f"time out")
break
win32api.CloseHandle(hList[0])
win32api.CloseHandle(hList[1])
win32api.CloseHandle(hList[2])
WaitForSingleObject 함수 처럼 위의 코드를 따로 실행시키고, 아래의 코드를 따로 실행 시켜야 합니다.
import win32event
import win32con
import win32api
evtHandle1 = win32event.OpenEvent(win32event.EVENT_ALL_ACCESS, win32con.FALSE, "evtTest1")
evtHandle2 = win32event.OpenEvent(win32event.EVENT_ALL_ACCESS, win32con.FALSE, "evtTest2")
evtHandle3 = win32event.OpenEvent(win32event.EVENT_ALL_ACCESS, win32con.FALSE, "evtTest3")
hList = [evtHandle1, evtHandle2, evtHandle3]
win32event.SetEvent(evtHandle1)
win32event.SetEvent(evtHandle2)
win32event.SetEvent(evtHandle3)
win32api.CloseHandle(hList[0])
win32api.CloseHandle(hList[1])
win32api.CloseHandle(hList[2])
1번 코드의 WaitForMultipleObjects 함수의 파라미터가 win32con.FLASE이기 때문에 siganled#1, #2, #3이 모두 나타납니다. 만약 win32con.TRUE 였다면, 결과는 signaled#1 하나만 나타나게 됩니다.
win32con.FALSE 인 경우
win32con.TRUE 인 경우
반응형
'pywin32 > win32event' 카테고리의 다른 글
20. [pywin32] WaitForMultipleObjectsEx 함수 (0) | 2020.09.24 |
---|---|
19. [pywin32] WaitForSingleObjectEx 함수 (0) | 2020.09.23 |
17. [pywin32] ReleaseSemaphore 함수 (0) | 2020.09.21 |
16. [pywin32] OpenSemaphore 함수 (0) | 2020.09.20 |
15. [pywin32] CreateSemaphore 함수 (0) | 2020.09.19 |
댓글()