0

私は 3 つのスレッドを持っています。優先度はすべて同じです。それぞれが「私はスレッド i です」と出力する必要があります。ここで、i はスレッド番号に対応します。出力が次のように同期する方法 I am thread 1 I am thread 2 I am thread 3

これは、各スレッドの優先度が異なる場合は簡単に達成できますが、同じ優先度を維持したい場合、どうすればこれを達成できますか?

これを実現するために使用できるオペレーティング システムのプリミティブや POSIX メカニズムはありますか?

4

1 に答える 1

1

必要に応じて特定の順序でスレッドを実行することは、学術/学習の観点からのものであると思います。そうしないと、マルチスレッドプログラミングの目的が無効になります。

それを実現する方法の 1 つは、pthread ライブラリによって提供される条件変数を使用することです。

pthread_cond_wait() 呼び出し元のスレッドが変数値でブロックされ、特定の値に達すると、このブロックされたスレッドは次を使用して「目覚める」ことができますpthread_cond_signal()

pthread 条件変数の使用方法の説明とコードの簡単な例については、これを参照してください。

于 2013-10-25T11:09:55.950 に答える