用于两个线程之间通信的C++多线程数据结构

标签 c++ multithreading message-queue

我有一个调用 COM 接口(interface)的各种 API 的线程。现在我想从另一个线程调用这些函数。你能告诉我如何实现这一目标吗? 如何实现这两个线程之间的通信?如果我定义了这两个线程通用的消息队列类型的数据结构,那么我该如何定义通用数据结构,因为每个 COM API 的参数都不同。

提前致谢

最佳答案

典型的方法是使用回调。您通过指针传递数据。您可以使用多态性来覆盖基类从队列中弹出时调用的方法。基调用函数 x,你在派生类中覆盖函数 x 来实现你想要的。

另一种方法是使用普通的旧回调。您将函数的地址连同您需要的任何数据一起传递到队列中,并干净利落地包装在一个结构中。所有回调必须具有相同的签名,因此您可能需要将数据转换为 void。

关于用于两个线程之间通信的C++多线程数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4100263/

相关文章:

c++ - 如何将具有特定语言环境的 u32string (char32_t) 大写?

java - 当线程在 Synchronized block 内崩溃时,锁会发生什么情况?

c# - .net 消息队列

java - JMS 持久性和持久性

c++ - QT中的QAbstractView是什么(这个语句)?

c++ - 地址运算

c++ - 使用 QTestLib 时抑制 qDebug

java - 即使线程尚未运行完毕,如何终止该线程?

c# - MP3在单独的线程中播放