지금까지 테스트 해온 결과로
동일 스레드에서 SendMessage는 메시지 루프가 없어도 되고 바로 프로시져를 호출
동일 스레드에서 PostMessage는 메시지 루프가 반드시 있어야함
다른스레드에서 PostMessage는 동일 스레드랑 똑같이 움직이고.
다른 스레드에서 SendMessage는 메시지 루프가 있어야 함.
찾아보니 메시지 큐에 들어가는게 아니라 스레드 블록하고 GetMessage시점에 프로시져를 호출하고
리턴한다는데...
뭐 어떻게 되는건지..? 메시지 큐 앞에 메시지 붙이는건가..?
다른 스레드들이 메인 스레드로 SendMessage 했는데 동기화 안걸어줘도
카운터가 제대로 찍힌거 보니까, 따로 동기화 해줄 필요가 없는거 같음.
GetMessage시에 호출이 되니 알아서 하나씩 처리를 해서 그런거 같음..
근데 아직도 이해 안되는거는
다른 스레드에서 SendMessage 하는거... 이거 자세히 설명해주실 분 없으신가요?
???
PostMessage는 메시지 큐에 쏙 넣기만 하고 ㅌㅌㅌ하는거고, SendMessage는 처리될때까지 기다려주는 차이 아니었나용
보내는 넘이야 편지 부치느냐 핫라인으로 전화거냐 차이지만 받는 놈도 문제이니,,,
단일 스레드에서는 키사횽 말이 맞긴 하지만
다른 스레드에서 날라오는 SendMessage는 GetMessage하는 시점에 처리가 되서 바로 처리하는게 아니라, 조금 블록되었다가 처리되는 듯함. 따라서 다른스레드에서 날라오는 메시지는 따로 동기화 할 필요가 없는거 같애... 일반 함수는 다 동기화를 해줘야 하자능
순간 \"GetMessage하는 시점에 바로 처리하는게 아니라\"라고 읽는 바람에 어리둥절했넹.. ㅇㅇ SendMessage가 메시지 큐에 넣고 처리될때 까지 기다리기 때문에, 동일 쓰레드에서는 바로 윈도우 프로시져를 호출하도록 했을듯 싶어요. 안그러면 SendMessage에서 멈춘 채로 영원히 기다려야 하니까..