2010-09-02 68 views
0

我有一堆关于提升线程的问题吗?Boost Thread ID无效

  1. 如何使用线程构造函数初始化boost线程ID?
  2. 为什么线程ID在调用join()函数后变得无效?
  3. 像往常一样,类成员函数是复制到线程内部存储为了执行成员函数,但我发现有人只是将boost线程封装在类中。 这是什么目的?

另一方面,我们允许继承boost线程吗? 请帮忙。

谢谢。

回答

2
  1. 您可以通过调用它获得从boost::thread对象的ID是get_id()成员函数:
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得到,但它不会真的让你在任何地方,因为没有虚函数。

0

对2的回答:因为调用连接等待,直到线程终止,并且变为无效。

+0

虽然线程终止,但其他一些数据仍然有效。请解释。 – peterwkc 2010-09-03 07:43:16

相关问题