ホームページ > バックエンド開発 > C++ > C# タスクを使用して同時タスクの実行を 10 に制限するにはどうすればよいですか?

C# タスクを使用して同時タスクの実行を 10 に制限するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-30 06:52:10
オリジナル
346 人が閲覧しました

How Can I Limit Concurrent Task Execution to 10 using C# Tasks?

タスクによる同時実行管理: 同時実行の制限

シナリオでは、100 個のタスクのセットを同時に実行することを目標としていますが、許可されるのは 100 個のタスクのみです。常に最大 10 個のタスクを実行できます。これには、同時実行性を効果的に管理して、適切なタスクの実行とリソースの使用率を確保することが含まれます。

タスクを使用してこの要件に対処するには、次のアプローチを採用できます。

// Define a SemaphoreSlim to limit concurrent tasks to 10
SemaphoreSlim maxThread = new SemaphoreSlim(10);

// Iterate through the tasks
for (int i = 0; i < 115; i++)
{
    // Wait for the SemaphoreSlim to allow a new task to execute
    maxThread.Wait();

    // Create a new task and schedule it
    Task.Factory.StartNew(() =>
    {
        // Perform the task's operation
    }, TaskCreationOptions.LongRunning)

    // Release the SemaphoreSlim when the task completes
    .ContinueWith((task) => maxThread.Release());
}
ログイン後にコピー

この実装では:

  1. maxThread という名前の SemaphoreSlim が、同時タスクの最大数を表す初期数 10 で作成されます。
  2. ループは 115 個のタスクを繰り返します。
  3. 各繰り返し内で、コードは SemaphoreSlim が許可を取得するのを待機し、同時に実行されるタスクが 10 個以下になるようにします。
  4. 許可を取得すると、Task.Factory.StartNew を使用して新しいタスクが作成されます。 TaskCreationOptions.LongRunning オプションは、タスクの実行に時間がかかる可能性があることを示します。
  5. ContinueWith を使用して継続がタスクに追加されます。タスクが完了すると、継続は SemaphoreSlim の許可を解放し、待機中の別のタスクの実行を開始できるようにします。

このアプローチにより、常に 10 個のタスクのみが実行されるようになり、同時実行性が効果的に管理され、リソースが発生しなくなります。飢餓。

以上がC# タスクを使用して同時タスクの実行を 10 に制限するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート