首頁 > 後端開發 > C++ > 如何使用C#以有限數量的執行緒並發執行多個任務?

如何使用C#以有限數量的執行緒並發執行多個任務?

Susan Sarandon
發布: 2025-01-02 15:08:38
原創
616 人瀏覽過

How Can I Execute Multiple Tasks Concurrently with a Limited Number of Threads Using C#?

用有限的執行緒並發執行任務

問題:

問題:

問題:

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());
}
登入後複製
你必須假設你有一組依序執行的任務,最多只能執行X 個任務時間。傳統上,ThreadPool.QueueUserWorkItem() 用於此類任務,但現在它被認為是次優方法。

    使用任務的解決方案:
  • 要實現此並發限制,請使用對於任務,我們可以使用 SemaphoreSlim 物件來管理可用執行緒的數量。以下是示範此方法的程式碼片段:
  • 程式碼的工作原理如下:
  • SemaphoreSlim 初始化: SemaphoreSlim 使用最大執行緒數進行初始化10個,最多允許運行10個任務
  • 任務執行: 對於每個要執行的任務,都會呼叫信號量的 Wait() 方法,該方法會阻塞,直到有執行緒可用。一旦執行緒空閒,就會使用 Task.Factory.StartNew() 啟動新任務。
任務完成: 每個任務完成後,附加到任務的ContinueWith() 方法會釋放呼叫訊號量的Release()方法所使用的執行緒。 順序執行:由於信號量強制執行有限的執行緒可用性,任務按順序執行,在任何給定時間最多運行 10 個任務。

以上是如何使用C#以有限數量的執行緒並發執行多個任務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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