欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

01 《沒有廢話!說明白點!》——協(xié)程到底是什么?

1 前言

很多人都沒有把協(xié)程說太明白,文章都是在說廢話一樣。我看到現(xiàn)在也一知半解,把協(xié)程認真總結(jié)一下。

2 我的理解

2.1 文檔總結(jié)

  • 線程是一個執(zhí)行邏輯。

  • 線程分為內(nèi)核態(tài)線程和用戶態(tài)線程:

    • 內(nèi)核態(tài)線程:由操作系統(tǒng)控制線程運行。
    • 用戶態(tài)線程:由進程自己控制線程運行,本質(zhì)上由內(nèi)核態(tài)線程控制。

    大多時候人們談及線程,其實是在說“內(nèi)核態(tài)線程”,這也是為什么很多文檔混亂的原因。后文談及到“內(nèi)核態(tài)線程”會直接寫明“內(nèi)核態(tài)線程”,而“線程”只代表一個執(zhí)行邏輯。

  • 對于操作系統(tǒng)來說,其無法感知到用戶態(tài)線程,所以內(nèi)核態(tài)線程是CPU的執(zhí)行單元

  • 線程需要被某一個更高管理者管理,則需要線程的調(diào)度方法,分為下面兩種:

    • 協(xié)作式調(diào)度:當前線程完全占用CPU,除非自己讓出,否則,直到運行結(jié)束,系統(tǒng)才執(zhí)行下一個線程。管理者只掌握調(diào)度權,線程自己掌握執(zhí)行權。
    • 搶占式調(diào)度:由更高管理者決定CPU下一個執(zhí)行的是哪一個線程,定期的中斷當前正在執(zhí)行的線程,任何一個線程都不能獨占。更高管理者掌握調(diào)度權和執(zhí)行權。
  • 進程是由“多個數(shù)據(jù)區(qū)域 + 至少一個內(nèi)核態(tài)線程”組成的一次活動。

  • 協(xié)程是一個用戶態(tài)線程,采用“協(xié)作式調(diào)度”,所以稱為“協(xié)程”。假如使用其他方式就不叫協(xié)程,同時很明確地認為——協(xié)程是線程。

2.2 簡單總結(jié)

  • 內(nèi)核態(tài)線程的執(zhí)行才是進程的活動。
  • 操作系統(tǒng)調(diào)度管理的線程,為內(nèi)核態(tài)線程。
  • 內(nèi)核態(tài)線程調(diào)度管理的線程,為用戶態(tài)線程。
  • 內(nèi)核態(tài)線程使用協(xié)作式調(diào)度管理的線程,為協(xié)程。

2.3 基礎的協(xié)程實現(xiàn)

  • 兩個由操作系統(tǒng)管理的內(nèi)核態(tài)線程:
    • 執(zhí)行者:用于執(zhí)行協(xié)程。
    • 管理者:用于管理協(xié)程的原數(shù)據(jù)。
  • 協(xié)作式體現(xiàn)在“協(xié)程可以主動停止”:
    • 執(zhí)行者在執(zhí)行過程中不受其他影響。當協(xié)程主動退出,并給出“下一次執(zhí)行該協(xié)程條件”,例如“I/O準備好”“某個變量的值為1”或者沒有。當該條件符合后,管理者才會放到“可運行隊列”中。
    • 和內(nèi)核態(tài)線程不同的是,操作系統(tǒng)可以根據(jù)某種算法,主動中斷其執(zhí)行過程。
  • 執(zhí)行者切換協(xié)程的過程:
    • 協(xié)程主動讓出或運行結(jié)束。
    • 執(zhí)行者保存上下文。
    • 管理者管理上下文。
    • 執(zhí)行者獲取下一個執(zhí)行協(xié)程的上下文。
    • 執(zhí)行者加載上下文。
    • 執(zhí)行新協(xié)程。
  • 上下文的保存和加載操作是由Linux提供好的一個依賴,調(diào)用底層的C++庫即可,其執(zhí)行在用戶態(tài)。

3 總結(jié)

這樣的理解能匹配得上其他文檔的說明,個人感覺沒什么問題。有錯歡迎批評。

沒有廢話!說明白點! 文章被收錄于專欄

記錄一下我在學習后端中遇到的那些難以理清楚的知識

全部評論
說的有點復雜了,協(xié)程本質(zhì)上就是一種用戶級線程,由用戶程序管理,對于操作系統(tǒng)來說,協(xié)程的切換操作系統(tǒng)是無感知的,所以這就節(jié)省了從用戶態(tài)切換到內(nèi)核態(tài)的資源消耗。多個用戶級線程或者說協(xié)程可以運行到同一個線程上。其實相當于提供協(xié)程能力的編程語言,由在操作系統(tǒng)之上給開發(fā)者抽象了一層,構(gòu)建了協(xié)程這種模型。屏蔽了底層操作系統(tǒng)線程的調(diào)度。
點贊 回復 分享
發(fā)布于 03-01 19:58 北京
好!
點贊 回復 分享
發(fā)布于 2024-08-05 17:32 四川

相關推薦

評論
3
7
分享

創(chuàng)作者周榜

更多
牛客網(wǎng)
??推髽I(yè)服務