c++ boost::线程操作符()()问题
C++ boost::thread operator()() question
这是我第一次尝试使用boost::threads,我有一个愚蠢的问题。我调用boost:线程来使用我的一个模板类函数。然而,在阅读本教程之后,它说要构建一个operator()()
,我做到了。下面的代码能正常工作吗?
template <class S>
class SarsaL : public Task<S,Policy>, protected Method
{
protected:
...
void updateEpsilons(S* avoid);
void step();
...
public:
...
void operator()();
...
};
template <class S>
void SarsaL<S>::operator()()
{
updateEpsilons();
}
template <class S>
void SarsaL<S>::step()
{
S* now_state = Task<S,Policy>::checkIfAdd();
...
...
boost::thread workerThread(&SarsaL<S>::updateEpsilons, this, now_state);
...
...
workerThread.join();
}
我问的原因是因为我在没有参数的操作符中调用updateEpsilons()
,但是在创建线程时我发送了参数now_state
。这行得通吗?代码编译和执行没有错误,我只是困惑
如果在要执行的对象上提供方法(在本例中为updateEpsilons
),则不必使用operator()()
。显然,这个operator()()
是不正确的,因为它没有使用参数调用适当的updateEpsilons
方法。
注意,在本教程中,创建的新线程只提供了一个类的实例,而没有方法。在这种情况下,类必须实现operator()()
,这是将为线程代码调用的。
相关文章:
- 使用 ubuntu 终端在 c++ 上运行线程类的问题
- C++线程安全:如果只有一个线程可以写入非原子变量,但多个线程从中读取. 会遇到问题吗?
- 尝试从头开始实现Leetcode的FizzBuzz多线程问题。收到"libc++abi.dylib: terminating"错误
- 餐饮哲学家问题 - 只有 2 个线程工作
- 线程过程中的线程同步问题
- 在 C++ 的 Qt 中使用 WINAPI 线程时出现问题
- 线程和互斥锁的使用有什么问题
- 并发问题:如何只有一个线程通过关键部分
- MFC执行线程问题
- 在多线程函数中返回共享的常量指针会导致计时问题吗?
- C++多线程生产者-消费者问题
- C++ 多线程中的锁和条件变量问题
- 线程清理器检测到数据争用,问题出在哪里?
- 编译问题 C++ 同时,尝试通过调用另一个对象中的成员函数来创建 std:: 线程
- 多线程与线程小问题
- 线程池 C++ 实现问题
- 提升线程问题,当一个线程与另一个线程没有相同的副本时如何共享变量?
- 如何修复macOS线程互斥锁性能缓慢的问题?
- 多线程概念问题
- 迷宫构造函数问题 [线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)]