用c ++将参数传递给我的线程

时间:2015-02-16 21:49:03

标签: c++ multithreading c++11

我正在使用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没有抛出 - 该主题可能取得了它的参数。

还有其他建议吗?

0 个答案:

没有答案