2011-03-22 20 views

回答

0

你不能讓t1等待t3,因爲在保持運行的同時沒有辦法中斷pthread_join,但是你可以用pthread_cancel取消t1,這將終止它,因此你將不再等待t2完成,並獲得一個不同的線程來等待t3。

0

我相信這是不可能的。但您可以按照pthread_join()的說明進行操作。

的在pthread_join()函數是一個 方便,在 多線程應用程序已經被證明是有用的。它是 確實如果程序員通過將額外狀態作爲 參數的一部分傳遞給start_routine(),而未提供 ,則程序員可以模擬 此函數。終止線程將設置標誌爲 指示終止並且廣播作爲該狀態一部分的 條件; 連接線程將等待條件變量 。

0

我認爲你應該在t1和t2之間使用一個條件變量,然後你可以將t3連接到t1。

0

簡單的方法來模擬pthread_timedjoin_np可移植性:

  1. 創建一個新的線程來執行pthread_join,並把它傳遞一個條件變量或信號。
  2. 對條件變量或信號執行定時等待。
  3. 在新的線程上調用pthread_cancel
  4. 在新的線程上調用pthread_join

當然我已經留下了一些細節,但他們很容易填寫。