发送消息到线程是什么意思?

4

我正在学习线程。我需要了解线程之间如何通信,那么当我们说“让Thread A发送消息给Thread B”时,这是什么意思呢?

我可以想到以下几点:

  • Thread B正在某种队列上阻塞,而Thread A向该队列中放入一个新条目,这会导致Thread B取消阻塞并检索此条目。
  • Thread B正在等待某个事件(例如,在Windows API中有Event对象),而Thread A会发出此事件的信号,这将导致Thread B唤醒(或者这被称为通知线程而不是向其发送消息吗?)

1
看一下这个简短的对话:***这里***。 - ryyker
1
第一个断言可以是第二个的实现,事实上,这就是 win32 事件对象大致内部实现的方式。 - Emilio Garavaglia
可能是在C中的线程间通信的重复问题。 - Dour High Arch
@DourHighArch:我不明白怎么做! - Emilio Garavaglia
2个回答

2
“线程”这个概念因来自不同环境的不同命名方法而产生了很多歧义,有时候相同的词汇会被用来表示不同的事情。
从非常一般的层面上看,你的第一个说法是有道理的: “消息”是唤醒线程并获取一些“输入”的原因。
根据操作系统及其API,你的第二个说法是有意义的,它只是使用Win32 API实现第一个说法的一种方式。
另一种可能的解释是线程在消息循环中被阻塞(请参见GetMessage),而另一个线程调用PostThreadMessage
更一般地说,你可以把“消息”看作是携带“状态”的“事件”:一个事件只是发生了(并且这是所有它给出的信息)。消息“发生了”,并且与之相关联的有一些参数。

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接