gpt4 book ai didi

C++ boost 线程 : Passing a method of an object

转载 作者:行者123 更新时间:2023-11-30 03:54:22 24 4
gpt4 key购买 nike

<分区>

给定对象 x,我想启动一个新线程来调用 x.a() 甚至 x.a(1,2,3)。我可以使用 boost::thread 为非成员函数执行此操作;但是如何为成员函数执行此操作?如何传递 this 指针?

一般来说,有很多 STL 和 Boost 代码以及将代码作为参数的模板,但是,由于这在 C++ 中并没有真正定义(函数不是一流的 val,没有原生的 lambda 支持),我非常困惑他们是如何定义的。我可以反复试验,但我想要更清晰、更可靠的东西。

更新:我的问题主要涉及传递一个方法;当我尝试执行明显的语法 (ClassName::method_name, instance) 时,我得到 invalid use of non-static member function error: no matching要调用的函数。如果您能展示在非静态方法上使用 Boost.thread 的正确语法,将会有所帮助。

更新 2:我发现了我为此苦苦挣扎的原因。给出的答案(例如 @OrDinari 给出的答案)非常适合 boost::thread。但是,当我尝试使用 thread_group,即 thread_group::create_thread 时,出现此错误:

 error: no matching function for call to ‘boost::thread_group::create_thread(void (C::*)(), C*)’

所以:

  1. 为什么它适用于单线程而不适用于线程组?
  2. 如何使用在组中创建线程来运行成员函数?

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