CLR via C# 读书笔记 1-2 创建线程的成本
生活随笔
收集整理的這篇文章主要介紹了
CLR via C# 读书笔记 1-2 创建线程的成本
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在clr中創建線程的代價還是比較高的 ,他需要兩個部分
內存:
基本上看來好像就消耗了1MB多一些的內存....不過如果你知道你的機器上一般都運行著數百個線程....可能就覺得這個數字太大了
?
CPU調度和上下文切換.
CPU在不同線程中切換的時候,需要卸載掉前一個線程的上下文,并加載后一個線程的上下文.
這也是一個非常消耗資源的操作
?
考慮到這兩個原因,一般在非必要情況下,盡可能的不創建線程,或者優先使用線程池
?
PS1:每個普通的windows線程 (不是.net線程)也需要消耗1M的堆棧
PS2:widnows線程和.net線程 現在是1對1的,不過不保證在將來的實現中也是一對一的
PS3:運行在SYSTEM下的線程可能做了特殊的處理并沒有消耗那么多的內存
PS4:書中提到每次切換上下文的時間是30MS,但是我個人覺得這個數字有點問題,似乎粒度不夠細
PS5:考慮到線程創建的成本,盡可能的復用它,就像線程池一樣
PS6:線程的成本低只是相對于進程而言,其實線程還是非常消耗資源的動作
PS7:真正創建和分配內存的動作在:Thread.Start, 而不在構造函數的時候
轉載于:https://www.cnblogs.com/PurpleTide/archive/2010/11/12/1875763.html
總結
以上是生活随笔為你收集整理的CLR via C# 读书笔记 1-2 创建线程的成本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ant打包web项目
- 下一篇: js判断浏览器\屏幕分辨率(转载)