繁体   English   中英

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

[英]What does it mean to send a message to a thread?

我正在学习线程。 我需要了解线程如何在彼此之间进行通信,那么当我们说“让Thread AThread B发送消息”之类的内容时,它意味着什么呢?

我能想到以下几点:

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

由于来自不同环境的不同命名法,“线程”世界存在许多模糊性,有时使用相同的词来表示不同的事物。

你的第一个断言在很一般的术语中是有意义的:“消息”是让线程唤醒并得到一些“输入”的原因。

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

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

在一个更通用的术语中,您可以将“消息”视为带有“状态”的“事件”:事件只是发生(这就是它给出的所有信息)。 消息“发生”,并且具有与之关联的一些参数。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM