1

pthread_taは、特定のスレッドに対して、その存続期間中一定のままであると推測しましたが、私の実験では、この仮定が間違っていることが証明されているようです。特定のスレッドの ID がその存続期間を通じて一定に保たれない場合、そのスレッドが終了するまで別のスレッドがブロックにpthread_t使用できるようにするにはどうすればよいでしょうか?pthread_join

他の理由から、 に前後に変換できるスレッドの一意の識別子を取得する方法を知っておくと便利ですpthread_t。これを行う方法はありますか?

すばらしい情報がたくさんありますが、これらの質問に対する有用な回答を特定するのに苦労しました. 私が得ることができる助け/アドバイスをいただければ幸いです!

編集: また、理由はわかりませんが、sleep(1) を追加し、すべての新しいスレッドの先頭 (スレッドの関数内) で 1 秒間スリープすると、すべてが期待どおりに機能するようです。これはおそらくストローとして把握していpthread_tますが、新しいスレッドまたは何かの開始時に値が瞬間的に変化する可能性はありますか??

4

2 に答える 2

1

pthread_tが一意であることに依存することはできませんが、 を使用pthread_equal()して、2 つのスレッド 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.
于 2009-06-27T09:34:32.293 に答える
0

pthreads スレッドの一意の定数識別子?

開始する各スレッドを一意に識別できるようにするには、次のようにします。

  • 単調増加カウンターを使用する
  • void*にカウンターを割り当てますpthread_create

詳細については、この回答を参照してください: How to assign unique ids to threads in a pthread wrapper?

于 2015-05-11T03:43:56.583 に答える