0
這是我第一次嘗試使用boost :: threads,我有一個愚蠢的問題。 我稱boost:thread來使用我的一個模板類函數。然而,在閱讀this tutorial之後,它說要構建一個operator()()
我就是這麼做的。 下面的代碼是否正常工作?C++ boost :: thread 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
。這會工作還是不爭論?代碼編譯和執行沒有錯誤,我只是困惑。