スレッドを使い始めたばかりです。私は理論を知っており、その主要な側面を理解していますが、このトピックについては少ししか練習していません。
次の問題の適切な解決策 (または可能であればパターン) を探しています。
このトランザクション コンポーネントの一部でもある、キューからタスクを処理するスレッドのプールを保持するトランザクション コンポーネントがあるとします。
このプールの各スレッドは、実行するタスクがあるまで待機し、キューから取り出して処理し、次のターンを待ちます。
また、複数のスレッドがこのキューにタスクを追加しているとします。次に、タスクが処理されるまでこれらのスレッドを一時停止します。
タスクが処理された場合、処理されたタスクをキューに入れていたスレッドを再び実行可能にする必要があります。
ruby クラスThread
はメソッドThread#stop
と を提供しますThread#run
。ただし、安定した実装が必要な場合は、これらのメソッドを使用しないでください。そして、ある種のシグナリングメカニズムを使用します。
ruby には、 、、、 などのようThread
に、一般的に同期とスレッド連携を扱うクラスがいくつかあります。Mutex
Monitor
ConditionVariable
ConditionVariable
信号を発することができるので、私の友達かもしれませんが、よくわかりません。
これをどのように実装しますか?