【发布时间】:2016-02-22 00:29:46
【问题描述】:
如果我从不同的线程使用 SendMessage() 到一个接收器会发生什么?想象一种情况,当接收者仍在处理来自 Thread1 的消息,而 Thread2 发送另一条消息(使用 SendMessage())。接收端会发生什么?它是否停止执行 Message1,处理 Message2 并在完成 Message2 后返回 Message1?还是 Message2 等待 Message1 结束?
【问题讨论】:
-
如果代码进入可更改的等待状态,Message1 可能在该处理期间被抢占,这将允许 Message2 得到处理。所以不能保证消息处理的顺序和原子性。
-
第二条消息在线程调用消息处理函数时分派。
标签: c++ windows multithreading winapi message-queue