0

したがって、私はたくさんのpthreadを持っています。ここで、1つは「メイン」スレッドであり、ワーカースレッドを実行するかスリープするかを決定します。しかし、睡眠のPOSIX定義では、The sleep() function shall cause the calling thread to be suspended from execution...

明らかに、フラグが設定されているかどうかを各ワーカースレッドにチェックさせるなど、不器用なことを行うこともできますが、もう少し良いものを探しています。これは私の計画にレンチを投げているので、私は私が明白な何かを見逃していることを望んでいます。

4

1 に答える 1

1

とにかくCilkをハッキングしているなら、私はあなたがやりたいことが何でもできると思います

各pthreadに、作業オブジェクトをデキュー(または盗む)する前にセマフォユニットを取得させ、作業の実行後に解放するのはどうですか?確かに少し待ち時間があるかもしれませんが、作業に使用できるスレッドの数は、セマフォに通知されるユニットの数と一致します。使用可能なスレッドの数を制御スレッドからNだけ減らすには、Nユニットを待機して取得し、N個の作業スレッドをチョークします。'emを再開するには、Nユニットに信号を送ります。

これはあなたのシステムで機能しますか?

Rgds、マーティン

于 2011-07-04T09:46:10.587 に答える