0

Pthread プログラミングでは、pthread_create 関数を呼び出して作業スレッドにタスクを割り当て、関数の引数も渡すことができますが、pthread_create を使用して以前に作成したスレッドにジョブを割り当てたいのですが、そのために何ができますか?

4

1 に答える 1

2

新しいタスクを既存のスレッドに「伝達」できます。既存のスレッドがシグナルを待機するようにします (pthread_cond_wait() を使用)。新しいタスクができたら、そのタスクを共通ストレージに格納し、単純にワーカー スレッドにシグナルを送ることができます (pthtread_cond_signal() を使用)。このアプローチは、着信タスクを待機しているワーカー スレッドのプールがある場合にうまく機能します。シグナルを送信すると、1 つのスレッドのみが起動し (pthread_cond_wait はミューテックスに関連付けられているため、そのうちの 1 つだけがミューテックスを再取得します)、残りのスレッドは引き続き待機します。

于 2013-09-05T05:06:35.123 に答える