1

コードの領域が1つのpthreadでのみ実行できるようにする最も簡単な方法は何ですか?

nスレッドがあると仮定します( n1に等しくない)

// do this once
int x;
x = some_function(); 
printf( "%d\n", x );

共有変数とバリアを使用しますか?すべての変数にスレッドID(?)を共有変数に割り当てさせてから、変数に書き込む最後のスレッドをマスタースレッドにすることができますか?その後、プログラムの後半で、共有変数に対してスレッドIDを確認できますか?

どうもありがとう。

どうもありがとう。

4

1 に答える 1

5

pthread_once()関数を試してください。この明確な目的のために作られました。 http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_once.html

共有変数を使用して結果を保存します。変数が安定していることを確認するために、pthread_once()をミューテックスでラップできます。すべてのスレッドはミューテックスをロックおよびロック解除する必要がありますが、ほとんどのスレッドは途中で何もしませんが、この方法により、スレッドの続行が許可される前に変数が完全に更新されます。

于 2012-07-20T13:41:48.073 に答える