簡體   English   中英

ManualResetEvent在處於等待狀態時會消耗cpu嗎?

[英]Will the ManualResetEvent consume cpu while it is in a wait state?

更具體地說,上下文切換的性能下降是否適用於處於等待狀態的線程?

在什么條件或情況下,ManualResetEvent或WaitHandle可能會消耗資源?

ManualResetEvent沒有等待狀態。 唯一可以在MRE上等待的是一個線程 是的,當一個線程不執行它所做的事情,執行代碼時,它會不必要地消耗大量寶貴的資源。 一兆字節的虛擬內存和一些內核對象。 與之相比,MRE消耗的單個內核對象是小土豆。

您通常希望使用線程池線程。

看看.NET 4.0中可用的內容。 像ManualResetEventSlim(不基於OS對象)和Task類。

在ManualResetEvent的情況下,沒有。 線程實際上並不是循環,也不是任何東西。 它只是引用了自己填充到ManualResetEvent的通知列表中。 當另一個線程在ManualResetEvent上調用.Set時,另一個線程最終將等待的線程放回到活動隊列中。

消耗的資源只是對線程存在的計算:堆棧,記錄的內核資源,保存的寄存器等等。現在,如果您所說的線程沒有使用ManualResetEvent,而是使用等待循環某種,然后肯定。

現在,WaitHandle不是一個實現。 這是一個抽象的API。 沒有人知道WaitHandle的其他實現如何工作。

暫無
暫無

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

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