制限されたスレッドでタスクを同時に実行する
問題:
次のセットがあるとします。連続して実行する必要があるタスク。一度に最大 X 個のタスクのみを実行します。従来、このようなタスクには ThreadPool.QueueUserWorkItem() が使用されていましたが、現在では次善のアプローチとみなされています。
タスクを使用した解決策:
この同時実行制限を達成するには、以下を使用します。タスクでは、SemaphoreSlim オブジェクトを使用して、利用可能なスレッドの数を管理できます。このアプローチを示すコード スニペットは次のとおりです。
SemaphoreSlim maxThread = new SemaphoreSlim(10); for (int i = 0; i < 115; i++) { maxThread.Wait(); Task.Factory.StartNew(() => { // Your task implementation }, TaskCreationOptions.LongRunning) .ContinueWith((task) => maxThread.Release()); }
コードの動作方法は次のとおりです。
以上がC# を使用して限られた数のスレッドで複数のタスクを同時に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。