2010-09-02 66 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

相關問題