【发布时间】:2018-06-30 22:22:03
【问题描述】:
其实我有两个问题:
- 从工作线程调用
SendMessage是否安全? -
CWnd方法,如MessageBox,是否在后台调用 API 函数SendMessage?
据我了解,当工作线程调用SendMessage时,它会将消息推送到UI线程的消息队列中,并等待该消息被处理。在这种情况下,这样做是安全的。
对此我不太确定。如果我错了,请纠正我。
非常感谢。
------------ 更新 ---------- ------------
作为结论:
- 跨线程调用 Windows API
::SendMessage和::PostMessage是安全的。 - 跨线程调用
CWnd方法是不安全的。有些方法可能是安全的,但不能保证。
非常感谢大家。
【问题讨论】:
-
还应该注意,在线程之间传递
CWnd指针是危险的,因为they are stored in a per thread map。
标签: c++ multithreading mfc sendmessage cwnd