5
您好我有一个Boost线程应该返回一个双。功能如下:Boost线程返回双重
void analyser::findup(const double startwl, const double max, double &myret){
this->data.begin();
for(int i = (int)data.size() ; i >= 0;i--){
if(this->data[i].lambda > startwl){
if(this->data[i].db >= (max-30)) {
myret = this->data[i+1].lambda;
std::cout <<"in thread " << myret << std::endl;
return;
}
}
}
}
这个功能是由另一个函数调用:
void analyser::start_find_up(const double startwl, const double max){
double tmp = -42.0;
boost::thread up(&analyser::findup,*this, startwl,max,tmp);
std::cout << "before join " << tmp << std::endl;
up.join();
std::cout << "after join " << tmp << std::endl;
}
反正我已经试过和GOOGLE了几乎所有的东西,但我不能让它返回一个值。
输出现在看起来像这样。
before join -42
in thread 843.487
after join -42
感谢您的任何帮助。
具体的事情要注意的是参数*复制*。在文档中查看[构造器注释](http://www.boost.org/doc/libs/1_46_0/doc/html/thread/thread_management.html#thread.thread_management.thread.multiple_argument_constructor)。 – chrisaycock 2011-03-01 15:15:36
我已经批准了您的待处理编辑,因此我无法对该问题进行自己的编辑。你能否再次修改这个问题,以便标签是* boost *和* C++ *?目前的标签是没有意义的。 – chrisaycock 2011-03-01 15:17:10
@chrisaycock完成。感谢您的解释! – CharlesB 2011-03-01 15:18:56