簡體   English   中英

pthread線程的唯一標識符和常量標識符?

[英]A Unique and Constant Identifier for a pthreads thread?

我假設pthread_t在給定的線程中在整個生命周期中都保持不變,但是我的實驗似乎證明這一假設是錯誤的。 如果給定線程的ID在其生命周期內未保持恆定,那么我如何存儲pthread_t以便另一個線程可以使用pthread_join阻塞直到該線程完成?

出於其他原因,對我而言,知道如何為可以往返轉換為pthread_t的線程獲取唯一標識符將非常有用。 有辦法嗎?

那里有很多很棒的信息,但是我很難確定這些問題的有用答案。 我將不勝感激!

編輯:另外,我不確定為什么,但是添加sleep(1)並在每個新線程的前端(在線程的功能內)休眠1秒時,一切似乎都按預期工作。 這可能像吸管一樣,但是在新線程啟動期間pthread_t值可能會瞬時改變嗎?

您不能依賴pthread_t是唯一的,但是可以使用pthread_equal()確定兩個線程ID是否引用同一線程。

NAME
     pthread_equal -- compare thread IDs

SYNOPSIS
     #include <pthread.h>

     int
     pthread_equal(pthread_t t1, pthread_t t2);

DESCRIPTION
     The pthread_equal() function compares the thread IDs t1 and t2.

RETURN VALUES
     The pthread_equal() function will return non-zero if the thread IDs t1 and t2
     correspond to the same thread. Otherwise, it will return zero.

pthread線程的唯一標識符和常量標識符?

為了確保您啟動的每個線程都可以唯一標識:

  • 使用單調遞增的計數器
  • 將計數器分配給pthread_createvoid*

有關更多詳細信息,請參見此答案: 如何在pthread包裝器中為線程分配唯一的ID?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM