目前,多執行緒模型非常常見,從終端應用到大型伺服器程式都會大量使用。在本文中,我們就來深入**下 linux 執行緒的內部細節,讓讀者對執行緒的把控更加胸有成竹,得心應手,主要包括以下幾方面內容:
乙個程序可以包含多個執行緒。多個執行緒可以併發執行,從而提高系統整體吞吐量,提供更好使用者體驗。乙個程序中的多個執行緒共享大多數的程序資料,包括**段、初始化資料段、未初始化資料段、堆記憶體段及動態鏈結記憶體段等。比較規整的多執行緒程式的記憶體布局如下圖所示(實際上,執行緒棧的位置遵循共享庫載入、對映共享記憶體和執行緒建立的排列順序,有時可能會有所變化):
每個執行緒的**均放置在 elf 檔案的 .text 段中,會在程序啟動時載入到可執行記憶體段內。當程序在執行中動態建立執行緒時,每個執行緒特有的資料只是自己的棧,其他資料與所在程序的其他執行緒共享。因此,相對程序,執行緒有以下幾點優勢。
第05課 實現簡單的拖放功能
在實現拖放功能中,分為三個步驟 1.按下滑鼠,觸發mouseleftbuttondown事件,選擇要拖動的物件。2.移動滑鼠,觸發mousemove事件,移動選擇的物件。3.放開滑鼠,觸發mouseleftbuttonup事件,停止捕捉事件。做乙個簡單的介面,用乙個按鈕來顯示拖放,如下xaml宣告 ...
第6課 終止執行緒
關閉核心物件 closehandler 如果不關閉控制代碼的話,可能造成資源洩露 掛起執行緒 suspendthread 可以掛起127次執行緒 掛起執行緒n次就需要恢復執行緒n次,但是不會大於127次 終止執行緒 exitthread該函式將終止執行緒的執行,並導致作業系統清除該執行緒使用的所有作...
第05課 條件 迴圈及其它語句
通過前面兩篇內容,我們學習了 python 的基礎知識。基於 python 提供的資料結構和一些內建函式,我們已經可以實現一些簡單的功能,但還不足以編寫乙個優雅的程式,這個問題將在本文得到解答。本文我們將學習 python 的重要語句 if else for while 等。首先來看乙個簡單的例子 ...