我有三个问题。

1.使用PostThreadMessage到CWinThread是否安全?

2.使用SendMessage(两个应用程序之间)安全吗?

消息可以消失吗?SendMessage,PostThreadMessage的缺点是什么?我可以发送的最大计数是多少?

3.杀死CWinThread的最佳方法是什么?

非常感谢!

最佳答案

使用PostThreadMessage到CWinThread是否安全?


在不发送或接收消息的情况下,张贴消息的线程不会受到损害是安全的。当接收线程处于模式循环时(例如,显示模式对话框,浏览菜单或在调整大小时),发布到线程的消息会丢失。


  使用SendMessage(两个应用程序之间)安全吗?


这通常是不安全的。如果目标应用程序无法检索传入消息,则发送应用程序也将挂起。使用SendMessageTimeoutSendNotifyMessage代替。

SendMessage的缺点是它可能导致Message DeadlocksPostThreadMessage的缺点是消息可能会丢失(请参阅Why do messages posted by PostThreadMessage disappear?)。

每个消息队列最多有10,000条已发布消息(请参见PostMessage)。


  杀死CWinThread的最佳方法是什么?


杀死CWindThread的最好方法是不杀死CWinThread。如果需要终止线程,请使用Event object(或其他一些同步原语)来通知线程终止。这使线程有机会执行清理,释放全局资源等。

关于c++ - PostThreadMessage和SendMessage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32416704/

10-11 16:49