向线程发送消息意味着什么?

时间:2015-04-14 18:14:29

标签: c multithreading

我正在学习线程。我需要了解线程之间如何进行通信,所以当我们说出类似于"让Thread AThread B&#34发送消息时,它是什么意思?

我能想到以下几点:

  • Thread B在某种队列上阻塞,Thread A放置一个新的 此队列中的条目,导致Thread B取消阻止并检索 这个条目。
  • Thread B阻止事件发生(例如,在Windows API中) 是Event object),Thread A表示此事件将发生 导致Thread B唤醒(或称为通知线程和 没有向它发送消息?)

2 个答案:

答案 0 :(得分:2)

"线程"由于来自不同环境的不同命名法,世界是许多含糊不清的主题,有时使用相同的词来表示不同的事物。

你的第一个主张在很一般的意义上是有道理的:"消息"是什么让线程唤醒并获得一些"输入"。

根据操作系统及其自身的API,您的第二个断言是有意义的,只不过是使用Win32 API实现第一个断言的方法。

另一种可能的解释是线程在消息循环中被阻止(见GetMessage)而另一个被调用PostThreadMessage

在更通用的术语中,您可以想到一条消息"作为一个"事件"带有'#34;状态"有了它:事件就发生了(而且它提供了所有信息)。消息"发生",并且有一些与之关联的参数。

答案 1 :(得分:0)

链接到使用两个线程复制文件的示例Windows代码,原始线程读取,创建的线程写入。有一个使用Windows互斥和信号量的自定义消息传递系统。除了创建和删除互斥锁和信号量的开销之外,实际的功能相当小。我使用类似的消息传递接口方案从事过嵌入式多线程设备。

http://rcgldr.net/misc/mtcopy.zip