UI线程和死锁

时间:2015-04-15 19:45:44

标签: c++ c multithreading winapi

我有一个UI线程,以及一个或多个工作线程。我希望工作线程写入UI控件,并从UI控件读取。我决定实现它的方法是使用SendMessage()

工作线程在主线程启动时启动,并在主线程终止时终止(如果我尝试向工作线程发送消息(并等待),请求终止并发出工作线程,这可能会导致死锁一个SendMessage()同时,但关闭我的程序将自动终止工作线程。

在UI线程中,我不会等待工作线程终止(或等待任何事情),所以我相信不会发生死锁。

我的问题是:是否有可能发生僵局的情况?

请注意,我不介意使用SendMessage()而不是PostMessage()导致的其他问题,例如阻塞工作线程一段时间而不是仅仅向UI线程消息发布消息排队并继续执行其代码。


这就是为什么我在工作线程中使用同步SendMessage()而不是异步PostMessage()的原因:

说我有以下伪代码:

/* Thread A */

// Get content of hEdit into str
// DeleteFile(str)

如果我使用PostMessage(),那么在将DeleteFile(str)的内容放入hEdit之前,我可以联系到str

0 个答案:

没有答案