我有一个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
。