協程了解一下

      網友投稿 940 2022-05-30

      文章目錄

      前言

      什么是協程

      相對于線程,協程的優勢

      協程的應用

      前言

      聽說協程挺火,大廠都在用。那得學一下。

      什么是協程

      協程,英文Coroutines,是一種比線程更加輕量級的存在。正如一個進程可以擁有多個線程一樣,一個線程也可以擁有多個協程。

      子程序,或者稱為函數,在所有語言中都是層級調用,比如A調用B,B在執行過程中又調用了C,C執行完畢返回,B執行完畢返回,最后是A執行完畢。

      所以子程序調用是通過棧實現的,一個線程就是執行一個子程序。

      子程序調用總是一個入口,一次返回,調用順序是明確的。而協程的調用和子程序不同。

      協程看上去也是子程序,但執行過程中,在子程序內部可中斷,然后轉而執行別的子程序,在適當的時候再返回來接著執行。

      注意,在一個子程序中中斷,去執行其他子程序,不是函數調用,有點類似CPU的中斷。比如子程序A、B:

      def A(): print '1' print '2' print '3' def B(): print 'x' print 'y' print 'z'

      1

      2

      3

      4

      5

      6

      7

      協程,了解一下

      8

      9

      假設由協程執行,在執行A的過程中,可以隨時中斷,去執行B,B也可能在執行過程中中斷再去執行A,結果可能是:

      1 x 2 y 3 z

      1

      但是在A中是沒有調用B的,所以協程的調用比函數調用理解起來要難一些。

      相對于線程,協程的優勢

      最大的優勢就是協程極高的執行效率。因為子程序切換不是線程切換,而是由程序自身控制,因此,沒有線程切換的開銷,和多線程比,線程數量越多,協程的性能優勢就越明顯。

      第二大優勢就是不需要多線程的鎖機制,因為只有一個線程,也不存在同時寫變量沖突,在協程中控制共享資源不加鎖,只需要判斷狀態就好了,所以執行效率比多線程高很多。

      因為協程是一個線程執行,那怎么利用多核CPU呢?最簡單的方法是多進程+協程,既充分利用多核,又充分發揮協程的高效率,可獲得極高的性能。

      協程的應用

      有哪些編程語言應用到了協程呢?我們舉幾個栗子:

      Lua語言

      Lua從5.0版本開始使用協程,通過擴展庫coroutine來實現。

      Python語言

      正如剛才所寫的代碼示例,python可以通過 yield/send 的方式實現協程。在python 3.5以后,async/await 成為了更好的替代方案。

      Go語言

      Go語言對協程的實現非常強大而簡潔,可以輕松創建成百上千個協程并發執行。

      Java語言

      Java語言并沒有對協程的原生支持,但是某些開源框架模擬出了協程的功能。

      C++語言

      寫這么一篇呢,我的意思很明確,我要學習協程這一塊兒。

      任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:榮獲認可!華為云GaussDB首批通過信通院可信云服務測評
      下一篇:如何利用“神兵利器”,四兩撥千斤撬動數據大山?
      相關文章
      午夜亚洲www湿好大| 最新亚洲成av人免费看| 国产亚洲大尺度无码无码专线| 亚洲国产欧洲综合997久久| 精品亚洲AV无码一区二区| 亚洲三级视频在线| 亚洲国产成人91精品| 亚洲人成伊人成综合网久久| 亚洲国产成人超福利久久精品| 亚洲国产成人超福利久久精品| 亚洲av日韩av无码av| 亚洲一区无码中文字幕乱码| 国产精品亚洲片夜色在线| 亚洲国产熟亚洲女视频| 亚洲色无码专区一区| 亚洲国产成人无码AV在线影院| 亚洲AV色欲色欲WWW| 天堂亚洲免费视频| 国产成人精品久久亚洲| 亚洲色大成网站WWW久久九九| 黑人精品videos亚洲人| 亚洲国产精品一区| 亚洲理论片在线中文字幕| 亚洲AV无码乱码麻豆精品国产| 2019亚洲午夜无码天堂| 亚洲sm另类一区二区三区| 亚洲VA综合VA国产产VA中| 亚洲精品动漫人成3d在线| 亚洲愉拍99热成人精品热久久| 亚洲AV永久无码精品成人| 亚洲精品白色在线发布| 波多野结衣亚洲一级| www亚洲精品少妇裸乳一区二区 | 国产午夜亚洲精品理论片不卡| 区久久AAA片69亚洲| 亚洲AV日韩AV永久无码绿巨人 | 亚洲国产成人久久综合区| 亚洲中文字幕无码一区| 亚洲a在线视频视频| 亚洲乱码卡一卡二卡三| 亚洲AV第一成肉网|