提升线程ID无效

时间:2010-09-02 03:26:35

标签: multithreading boost

我有很多关于提升线程的问题?

  1. 如何使用线程构造函数初始化boost线程ID?
  2. 调用join()函数后为什么线程id无效?
  3. 像往常一样,类成员函数被复制到线程内部存储以执行成员函数但我发现有人只是将boost线程封装在一个类中。 这是为了什么目的?
  4. 另一方面,我们是否允许继承boost线程? 请帮忙。

    感谢。

2 个答案:

答案 0 :(得分:2)

  1. 您可以通过调用boost::thread成员函数从get_id()对象获取ID:
  2. boost::thread t(do_something);
    boost::thread::id tid=t.get_id();
    

    您可以致电boost::this_thread::get_id()来获取当前主题的ID。

    1. 线程ID值在线程退出后仍然有效,与某些OS线程库的线程ID不同。

    2. 如果传入成员函数的地址和对象的地址,则可以在新线程上对该对象运行成员函数。因此,您可以在成员函数中启动线程,并将this作为对象指针传递。这允许新线程通过类实例的数据成员共享数据。

      你可以从boost::thread派生,但由于没有虚拟功能,它不会真正让你到处。

答案 1 :(得分:0)

回答2:因为调用join等待线程终止,然后变为无效。