从 <pthread.h> 到 <boost/thread.hpp 的翻译>

Translation from <pthread.h> to <boost/thread.hpp>

本文关键字:gt lt thread hpp 翻译 boost pthread      更新时间:2023-10-16

你能帮我把下面的方法从pthread库翻译成boost吗:

pthread_t tid; // I guess this should become : boost::thread tid; 
//... some instructions ...
pthread_create(&tid, NULL, (void*(*)(void*))process_request, (void*)some_ptr); 
void *process_request(void *soap) 
{ 
   pthread_detach(pthread_self()); 
   //... some instructions ...
   return NULL; 
}

非常感谢!

它很简单:

boost::thread(&process_request, some_ptr).detach();

您可以用std替换boost,并且您的程序在c++11中是可移植的。

注意,process_request现在实际上可以采用强类型的参数。如果要传递引用,请使用boost::ref(实际上是std::ref):

void process_request(MyData& data)
{
}
MyData data;
boost::thread th(&process_request, boost::ref(data));
th.join();

不过,这有点像C++11中的模式,数据移动到线程函数中,以避免在传递的参数上发生竞争:

void process_request(MyData&& data)
{
}
MyData data;
boost::thread th(&process_request, std::move(data));
th.join();