核心對象淺談

來源:互聯網
上載者:User

 今天我想淺談核心對象.

核心對象是一塊記憶體地區,它實際上是一個資料結構,只能由作業系統訪問,裡麵包含著一些ID值和引用計數等。

建立核心對象:

當線程裡面調用一個建立核心對象的函數時,就為這個核心對象分配一個記憶體地區,接著線上程的控制代碼表裡面找到位置存放記憶體對象的指標,這裡要說明一個,控制代碼表是線程資源的一個管理表,裡面存放著該線程調用的核心對象,當我們建立核心對象時,會返回一個控制代碼,控制代碼就是該核心對象在該控制代碼表的索引。線程是通過這個索引找到核心對象的指標,之後再對核心對象進行操作的,所以線程的控制代碼是不能給另一個線程調用的,會發生不可預知的後果。提醒一個,建立的核心對象都會改變其引用計數,i++,而若是共用的話,就在另一個線程裡面儲存該對象的指標,之後也要++

銷毀核心對象:

銷毀核心對象時我們通常會調用CloseHandle(),此時會把核心對象的引用計數--,倘若計數為0則銷毀對象。但是,當我們忘了調用CloseHandle()時,是不是意味著核心對象記憶體泄露了?答案是不一定。線上程調用期間,由於我們沒有關閉,核心對象是一直存在的,但是,當線程調用完畢時,系統會訪問控制代碼表,倘若裡面存在有效項,會逐一關閉,計數--,如果計數到0就銷毀,所以線上程結束後一定不會出現核心對象記憶體泄露。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.