我正在学习线程。我需要了解线程之间如何进行通信,所以当我们说出类似于"让Thread A
向Thread B
&#34发送消息时,它是什么意思?
我能想到以下几点:
Thread B
在某种队列上阻塞,Thread A
放置一个新的
此队列中的条目,导致Thread B
取消阻止并检索
这个条目。Thread B
阻止事件发生(例如,在Windows API中)
是Event object),Thread A
表示此事件将发生
导致Thread B
唤醒(或称为通知线程和
没有向它发送消息?)答案 0 :(得分:2)
"线程"由于来自不同环境的不同命名法,世界是许多含糊不清的主题,有时使用相同的词来表示不同的事物。
你的第一个主张在很一般的意义上是有道理的:"消息"是什么让线程唤醒并获得一些"输入"。
根据操作系统及其自身的API,您的第二个断言是有意义的,只不过是使用Win32 API实现第一个断言的方法。
另一种可能的解释是线程在消息循环中被阻止(见GetMessage)而另一个被调用PostThreadMessage。
在更通用的术语中,您可以想到一条消息"作为一个"事件"带有'#34;状态"有了它:事件就发生了(而且它提供了所有信息)。消息"发生",并且有一些与之关联的参数。
答案 1 :(得分:0)
链接到使用两个线程复制文件的示例Windows代码,原始线程读取,创建的线程写入。有一个使用Windows互斥和信号量的自定义消息传递系统。除了创建和删除互斥锁和信号量的开销之外,实际的功能相当小。我使用类似的消息传递接口方案从事过嵌入式多线程设备。