首頁 > 後端開發 > C++ > 如何使用 C# 任務將並發任務執行限制為 10 個?

如何使用 C# 任務將並發任務執行限制為 10 個?

Patricia Arquette
發布: 2024-12-30 06:52:10
原創
347 人瀏覽過

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

任務並發管理:限制並發執行

在您的場景中,您的目標是同時執行一組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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板