簡體   English   中英

從短期線程安排任務

[英]Schedule a task from a short-lived thread

我是C#的新手,來自C ++,想問一下這是否是使用Task Parallel Library的正確方法。

我有一個將長時間運行的操作排隊的Web服務。 我不想使用異步Web調用,所以我的想法是使用TPL,在調用Web操作時創建任務。 我想知道如果從Web操作完成后立即死掉的線程中調度任務,是否會發生資源泄漏。 假設我不會保留對該任務的引用,因為我不需要檢查其狀態或結果。 謝謝。

編輯:對不起,在第一槍中並沒有明確表達自己。 我的問題與Web服務有關,與客戶無關。 客戶端調用需要很長時間的Web服務操作。 Web服務調用返回,表明操作已在后台成功排隊/執行。 在Web服務操作中,我想使用TPL而不存儲StartNew返回的任務對象。 想知道,如果我不讀取任務狀態並因此泄漏,任務對象是否會永久保存。 也許只是我的C ++想法正在妨礙您,並且由於它是托管代碼,因此我不應該擔心泄漏。

忘記任務不會導致TPL出現任何問題,有關更多詳細信息,請參見stackoverflow.com/questions/3734280/…。 但是,您要在該任務中進行的工作很重要-如果您“忘記了”,您如何知道它已經完成,正確完成並且不需要重新啟動? 這就是所有特定於應用程序的。

線程池的“完全繁忙”意味着已創建並正在執行1023個線程池線程(這可能確實很糟糕)。 否則,線程池至少以每個CPU /核心一個線程開始,並且只要不存在那么多未運行的線程,就每秒通過啟動一個新線程來維持該最小數量。 因此,它實際上不會“排隊”任何東西。 例如,您可以啟動12個任務,然后將其“排隊”為4,在另一點,它運行了全部12個任務...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM