PostThreadMessage SendThreadMessage
http://bbs.csdn.net/topics/80088368
|
|
|
因为 API 函数 只有PostThreadMessage();
没有SendThreadMessage(); 为什么API函数没有 SendThreadMessage(); 我估计是因为PostThreadMessage 只是加入到线程得消息队列里 而 SENDMESSAGE 需要直接调用 窗口函数 然后等待其返回 而线程消息队列不好处理吧 |
|
|
PostThreadMessage()是异步的,一般来说,只要是异步的都可以做成同步的,需要自己
再包装一下就可以了,这个不是什么难事,只要你喜欢,比如: HANDLE hEvent = ::CreateEvent(...); WPARAM wParam = (WPARAM)hEvent; ::PostThreadMessage(dwThreadId,uMsgId,wParam,...); ::WaitForSingleObject(hEvent,INFINITE); ::CloseHandle(hEvent); |
|
|
同步的可以通过异步来实现
|
|
|
假设真有"SendThreadMessage",那么可能带来死锁。所以Windows根本就没设计这个。
"Send",需要返回才接着执行后续代码(所谓的"同步"方式),但消息在两个线程间传递,要执行消息处理代码,必然需要线程上下文切换。所以没有所谓的"SendThreadMessage" |
|




浙公网安备 33010602011771号