从<pthread.h>转换为<boost thread.hpp =“”> </boost> </pthread.h>

时间:2014-04-24 15:52:37

标签: c++ multithreading boost pthreads

是否可以帮助我将以下方法从 pthread 库翻译为提升库:

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; 
}

非常感谢你!

1 个答案:

答案 0 :(得分:3)

这很简单:

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

您可以将boost替换为std,并且您的程序可以在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();