要開始使用boost::thread
,我寫了一個非常簡單的例子 - 這不起作用。有誰能指出我的錯誤嗎?boost :: thread - 簡單的例子不起作用(C++)
我寫了一個非常簡單的函子類類來完成這項工作。它應該計算雙打的std::vector
的總和,並給我一個方法後得到的結果:
class SumWorker
{
private:
double _sum;
public:
SumWorker() : _sum(-1.0) {}
void operator() (std::vector<double> const & arr)
{
_sum = 0.0;
for(std::vector<double>::const_iterator i = arr.begin();
i != arr.end();
i++)
{
_sum += (*i);
}
}
double const value() const
{
return _sum;
}
};
現在,我可以計算兩種方式之一的總和。如果我在主線程內做,就像
SumWorker S;
S(numbers); // "numbers" is an std::vector<double>
double sum = S.value(); // "sum" now contains the sum
然後一切正常。然而,如果我試圖在一個單獨的線程(這是整個點)做到這一點,
SumWorker S;
boost::thread thread(S, numbers); // Should be equivalent to "S(numbers);"
thread.join(); // Wait for thread to finish
double sum = S.value(); // "sum" now contains -1.0
...然後它不起作用。
對不起,如果這是顯而易見的,但我很難過。任何線索?