gpt4 book ai didi

c++ - 如何使用 C++ 在不同的线程上调用函数?

转载 作者:行者123 更新时间:2023-11-30 04:21:47 25 4
gpt4 key购买 nike

我正在创建一个将由其他团队/产品使用的组件。该组件允许客户端代码发出一组命令,并且在内部这些命令在工作线程上执行 - 使用线程安全队列实现,其中命令被添加到调用者(客户端)线程上的队列,并在工作线程。

我想以“操作 XYZ 已完成”的形式从我的组件向客户端代码提供反馈。我可以通过回调轻松地做到这一点,但是回调是在我的工作线程上调用的——我希望它发生在调用者(客户端)线程上。 我该怎么做?

它是一个跨平台组件(Windows、Linux、OS X)。升压是可用的。我的默认开发编译器是 MS VC++ 2010,即它不是 C++11。

最佳答案

安排这种多线程架构的通常方法是让每个线程都有一个阻塞的仿函数队列。

每个线程循环其队列,依次执行每个仿函数。

要在不同的线程中调用一个函数,您只需创建一个仿函数并将其添加到该线程队列。

要在 C++ 中创建仿函数,您可以使用 std::functionstd::bind、lamdbas、函数对象或函数指针。参见 std::function

没有标准的阻塞队列,但是用信号量和互斥量(它们是 std::thread 库 afaik 的一部分,也是 pthread 的一部分)编写一个相当容易。 Google “阻塞队列”

关于c++ - 如何使用 C++ 在不同的线程上调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14208534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com