私は自分が持っている要件を解決する方法を見つけようとしてきましたが、私の人生の間、私は解決策を思い付くことができません。
ある種のキューを格納するアイテムのデータベースがあります。(データベースはすでに実装されており、他のプロセスがこのキューにアイテムを追加します。)
アイテムは「処理」するために多くの作業/時間を必要とするため、次のことができる必要があります。データベースからアイテムを常にデキューします。アイテムごとに、新しいスレッドを実行してアイテムを処理し、正常に処理された場合はtrue/falseを返します。(これは、データベースキューに再追加するかどうかに使用されます)
ただし、これを行うには、現在アクティブなスレッドの数(処理中のアイテムごとに1つ)がスレッドの最大数パラメーターよりも少ない場合に限ります。
スレッドの最大数に達したら、現在のスレッド数が最大スレッド数より少なくなるまで、データベースからのアイテムのデキューを停止する必要があります。その時点で、アイテムのキューからの削除を続行する必要があります。
これは私が思いつくことができるものであるように感じますが、それは私には来ていません。
明確にするために:私はスレッドを実装する必要があるだけです。データベースはすでに実装されています。