日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

CLR via C# 读书笔记 1-2 创建线程的成本

發布時間:2025/5/22 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CLR via C# 读书笔记 1-2 创建线程的成本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在clr中創建線程的代價還是比較高的 ,他需要兩個部分

內存:

  • 線程核心對象, 存放描述線程的一些內容和上下文?. (內存消耗:700B-2500B)
  • 線程環境,存放例如異常處理鏈之類. (內存消耗 1Page? 4k-8k)
  • 用戶模式堆棧, 存放 參數 變量等? ,這也就是平時我們說的堆棧和堆的區別中的堆棧? (內存消耗:1MB)
  • 核心模式堆棧, (內存消耗12KB-24KB)
  • 基本上看來好像就消耗了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 创建线程的成本的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。