boost::thread
을 시작하려면 아주 간단한 예제를 작성했습니다. 작동하지 않습니다. 아무도 내 실수를 지적 할 수 있을까?boost :: thread - 간단한 예제가 작동하지 않습니다. (C++)
나는 아주 간단한 functor 유형의 클래스를 작성하여 작업을 수행했습니다. 이제
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;
}
};
, 나는 두 가지 방법 중 하나로 합을 계산할 수 있습니다 : 두 배의 std::vector
의 합을 계산하고, 나에게 나중에 결과를 얻을 수있는 방법을 제공하기로했다. 예를 들어 메인 스레드 내에서 수행하면
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
... 그러면 작동하지 않습니다.
죄송합니다. 분명히 드러나지 만 미안합니다. 모든 단서?