c – Boost :: thread如何获取指向调用函数的线程的指针?

使用boost :: thread,如何从该函数中获取指向当前正在执行我的函数的boost :: thread的指针?

以下内容不适合我:

boost::thread *currentThread = boost::this_thread;
最佳答案
你必须小心,因为boost :: thread是一个可移动的类型.考虑以下:

boost::thread
make_thread()
{
    boost::thread thread([](boost::thread* p)
    {
        // here p points to the thread object we started from
    }, &thread);
    return thread;
}

// ...
boost::thread t = make_thread();
// if the thread is running by this point, p points to an non-existent object

boost :: thread对象在概念上与一个线程相关联,但不是规范地与它相关联,即在线程的过程中,多个线程对象可能与它相关联(在给定时间只有不超过一个).这就是为什么boost :: thread :: id就在这里的原因.那么你想要达到的目标是什么?

转载注明原文:c – Boost :: thread如何获取指向调用函数的线程的指针? - 代码日志