SendMessage, PostMessage 윈도우 메세지 처리 방법의 차이

win32 메세지 처리 함수 는 크게 두가지가 있다

SendMessage 와 PostMessage

윈도우의 메세지 처리루틴은 해당 메세지를 받고 메세지의 id 에 맞는 프로시져를 호출 하게 되는데

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendmessage

SendMessage 의 경우 Sync 방식으로 호출과 동시에 해당 메세지를 메세지 처리기가 직접 받아 바로 처리 하게 된다 즉시성이 보장되며 순서가 보장되고 해당 프로시져가 종료되어야 함수가 반환 된다

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-postmessagea

PostMessage 의 경우 async 방식으로 바로 메세지에 대한 프로시져를 호출하지 않고 메세지 큐에 해당 메세지를 보내며 윈도우의 메세지큐 순서에 따라 해당 메세지가 실행된다
메세지큐에 메세지를 보낸 직후 함수가 종료되어 반환 되기 때문에 해당 메세지의 목적 프로시져에 대한 실행 을 즉시 보장하지 않는다

  • post = 우편 이라고 생각하면 단어적 의미를 두고 이해하기 쉬울 듯 하다 보내는 놨으니 언젠가는 우편물이 도착하는데 언제도착할지는 알 수 없다

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다