是否可以帮助我将以下方法从 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;
}
非常感谢你!
答案 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();