我正在使用c ++
我有一个线程函数' my_thread',需要以某种方式接收某个对象(MyParam)作为参数。
我不确定如何传递参数的所有权。
谁应该负责释放它,以及在哪个阶段?
我通常做的是:
MyThread::MyThread(func_to_execute, void* param);
void my_thread(MyParam* param)
{
// Take ownership
std::unique_ptr<MyParam> obj(param);
...
}
void main()
{
// Create the param. Prepare p
std::unique_ptr<MyParam> p(new MyParam(...));
// Create the new thread
MyThread(my_thread, (void*)param.get());
// If the creation of the thread succeeded (no exception was thrown), Let go of ownership.
(void)param.release();
}
(我不能使用std :: thread)
此代码假设如果MyThread的ctor没有抛出 - 该主题可能取得了它的参数。
还有其他建议吗?