线程池 ManualResetEvent
線程池:
“線程池”是可以用來在后臺執行多個任務的線程集合。(有關背景信息,請參見使用線程處理。)這使主線程可以自由地異步執行其他任務。
線程池通常用于服務器應用程序。每個傳入請求都將分配給線程池中的一個線程,因此可以異步處理請求,而不會占用主線程,也不會延遲后續請求的處理。
一旦池中的某個線程完成任務,它將返回到等待線程隊列中,等待被再次使用。這種重用使應用程序可以避免為每個任務創建新線程的開銷。
線程池通常具有最大線程數限制。如果所有線程都繁忙,則額外的任務將放入隊列中,直到有線程可用時才能夠得到處理。
您可以實現自己的線程池,但是通過 ThreadPool 類使用 .NET Framework 提供的線程池更容易一些。
參見:https://msdn.microsoft.com/zh-cn/library/3dasc8as(vs.80).aspx
?
ManualResetEvent 類
ManualResetEvent??? 允許線程通過發信號互相通信。? 通常,此通信涉及一個線程在其他線程進行之前必須完成的任務。?
當一個線程開始一個活動(此活動必須完成后,其他線程才能開始)時,它調用 Reset 以將 ManualResetEvent 置于非終止狀態。? 此線程可被視為控制 ManualResetEvent。? 調用 ManualResetEvent 上的 WaitOne 的線程將阻止,并等待信號。? 當控制線程完成活動時,它調用 Set 以發出等待線程可以繼續進行的信號。? 并釋放所有等待線程。?
一旦它被終止,ManualResetEvent 將保持終止狀態,直到它被手動重置。? 即對 WaitOne 的調用將立即返回。?
可以通過將布爾值傳遞給構造函數來控制 ManualResetEvent 的初始狀態,如果初始狀態處于終止狀態,為 true;否則為 false。
ManualResetEvent?? 也可以同 staticWaitAll 和 WaitAny 方法一起使用。
?參見:https://msdn.microsoft.com/zh-cn/library/system.threading.manualresetevent(v=vs.110).aspx
轉載于:https://www.cnblogs.com/ChineseMoonGod/p/4272088.html
總結
以上是生活随笔為你收集整理的线程池 ManualResetEvent的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NuGet 发布类库,依赖项的问题
- 下一篇: Ipython中如何输入汉字