新しいスレッドを作成して頻繁に破棄することは、あまり良い考えではありません。1 つには、メモリを消費しすぎないようにこれをバインドする方法が必要です (たとえば、スタック スペースを考えてください)。または、スレッドが時間の競合のために多くのプリエンプションが発生するポイントに到達する必要があります。 CPU。第二に、新しいスレッドの作成と破棄に関連する多くの作業が無駄になります。(これはオペレーティング システムによって異なります。スレッドの作成が安価な OS もあれば、高価な OS もあります。)
実装しようとしているのは作業キューのようです。これに関する適切なウィキペディアの記事は見つかりませんでしたが、次の記事に近いです: Thread pool pattern。
これを実装する方法と、使用できるさまざまな同時キュー アルゴリズムについて、何時間も話し続けることができます。しかし、アイデアは、キューを空にする N 個のスレッドを作成し、キューに入れられたアイテムに応じて何らかの作業を行うというものです。通常、キューにアイテムがない間、スレッドがセマフォで待機するようにすることもできます。ワーカースレッドはこのセマフォをデクリメントし、エンキューアはそれをインクリメントします。ワーカー スレッドがビジーでリソースを消費しすぎている間にエンキューがキューに入れすぎないようにするために、「利用可能なキュー スロットの数」セマフォでエンキューを待機させることもできます。これらは単なる例であり、詳細はあなた次第です。君は'