亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

用戶態多線程實現的基本原理

系統 1987 0

本文參考了 用戶態非搶占式線程庫實現 一文以及 GNU Pth 。前者是一種用戶態線程庫的簡單實現,屬于一個很好的demo,后者就是大家熟知的Pthread的用戶態實現,比較完善。

Keywords: User-Space MultiThreading, Pth

所謂多線程,簡單講就是能夠讓幾個不同的代碼片段輪流執行。內核實現多線程的方法比較直觀,在每次時鐘中斷到來時或者用戶調用syscall陷入內核時進行上下文切換即可。用戶態切換線程要解決兩個問題:

1、時機,即何時切換線程?

2、方法,即怎樣切換上下文?

為了決定切換時機,需要確定所設計的線程庫是可剝奪(preemptive)的還是不可剝奪(non-preemptive)的。一般,用戶態線程庫都選擇使用不可剝奪的設計方案,這么做的好處是將控制權交給用戶,而用戶最了解何時需要放棄執行權。這么做減少了系統切換次數,實現了最高的CPU利用率,非常適合用于科學計算環境。但是,另一方面這么做也存在缺點:其它線程的響應速度變慢,他們必須等到當前CPU放棄執行權后才能被執行。能不能將用戶線程設計成可剝奪的呢?這應該也是可行的。每個用戶線程運行一段時間后會被迫暫停執行,被動地將控制權交回給調度器。怎樣才能“被迫暫停執行”?這是方法問題,下面就要講到。

對于不可剝奪方式,需要用戶編寫程序的時候主動調用諸如thread_yeild(), thread_wai()之類的函數,這些函數會將當前用戶線程的執行上下文保存起來,然后讓調度器選擇一個新的用戶線程投入執行。底層操作系統提供了一些列的機制支持上下文的獲得和切換,如setjmp,longjmp,getcontext,swapcontext等。 用戶態非搶占式線程庫實現 一文使用了前面兩個函數, GNU Pth 使用了后面兩個函數。可剝奪方式的實現需要更多的操作系統支持,如可以利用alarm函數周期性地產生用戶態中斷,每次中斷到來的時候線程庫進行線程切換。

單純的用戶態線程庫一般都是基于一個單線程進程實現的,一旦用戶線程阻塞,這個進程就被阻塞,進而導致整個用戶態線程組得不到CPU。基于單進程實現的用戶態線程庫在SMP/多CPU環境下性能很差,多出來的核無法被線程庫利用,這跟當前的微處理器架構發展趨勢十分不符。為了解決這個問題,可以考慮使用一種混合結構:在少量內核線程的基礎上實現大量的用戶線程。

用戶態多線程實現的基本原理

最后思考一個問題:為什么用戶態線程庫比內核態線程庫具有更高的性能呢?其實用戶態線程庫同樣離不開進入內核態這一過程,以getcontext,swapcontex實現方式為例,getcontext要進出一次內核,swapcontex又要進出一次內核,而內核線程切換則只需要一次時鐘中斷,只進出內核一次即可。這么說來,用戶態線程庫的性能應該劣于內核態線程庫。但是,注意到每次時鐘中斷所做的工作遠遠不止上下文切換這么簡單,這應該是用戶態線程庫更優的原因吧。基于這個分析,如果應用需要創建的線程數并不多,二者應該性能相當。但是,一旦線程數巨大且切換頻繁,用戶態線程庫的優勢就能體現出來了。

用戶態多線程實現的基本原理


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 手机免费在线观看 | 99久久免费精品视频 | 嫩草影院麻豆久久视频 | 成人国内精品久久久久影 | 国产永久免费爽视频在线 | 中文字幕 亚洲精品 第1页 | 国产精品一区伦免视频播放 | 色婷婷91| 国产大尺度福利视频在线观看 | 国产伦久视频免费观看 视频 | 久久国产午夜精品理论片34页 | 国产免费自拍视频 | 亚洲日本一区二区三区在线不卡 | 亚洲精品乱码一区二区在线观看 | 青草五月天 | 宅男在线看片 | 天天爽影院一区二区在线影院 | 亚洲夜色 | 性做久久久久久久 | 99re在线| 免费精品99久久国产综合精品 | 国产免费资源 | 久久88香港三级台湾三级中文 | 国产午夜不卡在线观看视频666 | 成人激情开心网 | 91亚洲精品国产自在现线 | 欧美日韩图区 | 日韩欧美中文字幕在线播放 | 成年女人aaaaa毛片 | 久久亚洲国产午夜精品理论片 | 日本特交大片免费观看 | 亚洲精品欧洲一区二区三区 | 玖玖爱精品| 亚洲天堂一区二区三区四区 | 日韩免费视频观看 | 2021午夜国产精品福利 | 韩国三日本三级中文字幕 | 午夜视频在线观看网站 | 天天操夜夜爽 | 国产日韩欧美一区二区三区综合 | 免费看一级欧美毛片 |