Hola Tengo un hilo Boost que debería devolver un doble. La función tiene el siguiente aspecto:Retorno Doble del hilo 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;
}
}
}
}
esta función es llamada por otra función:
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;
}
De todas formas he intentado y buscado en Google casi cualquier cosa, pero no puedo conseguir que devuelve un valor.
La salida se ve así en este momento.
before join -42
in thread 843.487
after join -42
Gracias por cualquier ayuda.
Lo específico a tener en cuenta es que los argumentos están * copiados *. Mire las [notas del constructor] (http://www.boost.org/doc/libs/1_46_0/doc/html/thread/thread_management.html#thread.thread_management.thread.multiple_argument_constructor) en la documentación. – chrisaycock
Ya he aprobado su edición pendiente, por lo que no puedo hacer mis propios cambios a la pregunta. ¿Podrías modificar la pregunta una vez más para que las etiquetas sean * boost * y * C++ *? Las etiquetas actuales no tienen sentido. – chrisaycock
@chrisaycock hecho. ¡gracias por la explicación! – CharlesB