[英]multi-thread CPU usage in C#
我的程序使用預定數量的線程,每個線程都執行獨立工作。 我使用i7-2600 CPU,但我關閉了超線程模塊,因此它在4個內核上運行4個線程。 當我使用1個線程運行程序時,CPU使用率為25%,這是完全使用1個線程的完美,但是當我運行4或3個線程時,我只獲得60%的CPU,為什么?
就像我之前提到的那樣,線程是完全獨立的(沒有鎖和沒有爭論)當我用1個線程運行程序4次時,我獲得了100%的CPU使用率(即,當每個進程的4個進程為1個線程時,我得到了正確的CPU使用率)
有任何想法嗎?
更多信息:
並發可視化工具將在這里為您提供幫助。 您將看到每個線程何時執行,如果所有線程都沒有執行,您可以確切地看到特定線程正在等待的原因。 如果生成大量垃圾,GC可能會阻止線程導致線性縮放。 但你只能通過真正的調查找到答案。
我在使用.NET Framework v2.0時遇到了同樣的問題,然后我將項目目標框架更改為v4.0,它以100%CPU負載啟動
編輯:您只需使用即可查看每個線程的CPU使用情況
要么
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.