PostMessage함수과 SendMessage함수를 공부하다 의문점
겨울
갑자기 MFC공부하다가 의문점이들었는데요.
PostMessage함수가 보내고자하는 메시지를 메시지큐에 추가하는 함수인데 정상적인 방법으로 메시지를 처리하는반면에, SendMessage함수는 그냥 직빵으로 보내는 함수잖아요.
SendMessage함수 장점이뭔가요?
뭐 PostMessage함수에비해서 속도가 굉장히빠른가요?
제가 공부하고잇는 이책에서는 딱히 장점을 말하고잇지않고잇네요..
p.s 아 짜증나 어제 무개념이랑 싸우다가 본계정 활정먹음
-
보단
에, 뭐 직접가는건 맞죠.
-
밝음이
네. 메시지를 보낸 프로그램은 리턴을 받을 때까지는 Block상태이며, 만약 응답없음 상태의 프로그램에 메시지를 보낸다면 계속 기다리게 되겠죠. 이런 예외문을 처리하기 위해 SendMessageTimeout 함수가 존재하며, 해당 메시지를 전달받은 프로그램의 메시지 핸들러 함수를 직접 호출하기 때문에 즉각적으로 처리되는건 맞습니다.
-
헛소동
즉각적으로 라는 말은 조금 문제가 있습니다..
SendMessage는 메세지를 처리할때 까지는 절때 움직이지 않습니다.
그런 즉슨, 그 단점을 보안해주는 SendMessageTimeout 이 존재 합니다. -
꽃여름
속도라기보단 PostMessage는 언제 처리될지 정확히 모른다는게 정확한 표현이겠죠
SendMessage 는 직접적으로 메시지 핸들러 함수를 호출함으로써 즉각적으로 처리되지만 -
갤쓰리
솔직히두 API는 메세지 루프에서 속도를 따지는 것보다 메세지 처리의 동기화에 차이점을 더 크게 두고 있어요.
여기에서 속도를 논하는것은 별 의미가 없죠. -
흡뜨다
PostMessage가 일반적으로 더 느립니다....
메시지 처리속도로는요 ㅋㅋㅋ..; -
난새
아뇨 해당 메시지를 받은 프로그램의 메시지 처리 속도를 말한 거고
계속 리턴값을 기다리는 예외문을 처리하기 위해 SendMessageTimeout 함수도 존재합니다. -
앨버트
근데 요즘은 CPU도 좋고하니까 안정적이기도한 PostMessage를 써야할것같아요
-
아메
대체적으로 SendMessage가 PostMessage보다 빠릅니다.
메시지큐가 비어있는 상태라면 모를까 다른 메시지가 있다면 PostMessage로 보낸 메시지가 늦게 처리되겠죠.
그렇게 생각하면 SendMessage가 더 효율적이기도 하고..