日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

并发编程——协程

發(fā)布時(shí)間:2024/5/6 79 豆豆
生活随笔 收集整理的這篇文章主要介紹了 并发编程——协程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、引子

基于單線程來實(shí)現(xiàn)并發(fā),即只用一個(gè)主線程(可利用的cpu只有一個(gè))情況下實(shí)現(xiàn)并發(fā)(并發(fā)的本質(zhì):切換+保存狀態(tài))該怎么搞。

cpu正在運(yùn)行一個(gè)任務(wù),會在兩種情況下切走去執(zhí)行其他的任務(wù)(切換由操作系統(tǒng)強(qiáng)制控制),一種情況是該任務(wù)發(fā)生了阻塞,另外一種情況是該任務(wù)計(jì)算的時(shí)間過長或有一個(gè)優(yōu)先級更高的程序替代了它。

在介紹進(jìn)程理論時(shí),提及進(jìn)程的三種執(zhí)行狀態(tài),而線程才是執(zhí)行單位,所以也可以將上圖理解為線程的三種狀態(tài)。

第一種情況的切換。在任務(wù)一遇到io情況下,切到任務(wù)二去執(zhí)行,這樣就可以利用任務(wù)一阻塞的時(shí)間完成任務(wù)二的計(jì)算,效率的提升就在于此。

第二種情況的切換并不能提升效率,只是為了讓cpu能夠雨露均沾,實(shí)現(xiàn)看起來所有任務(wù)都被“同時(shí)”執(zhí)行的效果,如果多個(gè)任務(wù)都是純計(jì)算的,這種切換反而會降低效率。

為此我們可以基于yield來驗(yàn)證,yield本身就是一種在單線程下可以保存任務(wù)運(yùn)行狀態(tài)的方法,我們來簡單復(fù)習(xí)一下:

1 yiled可以保存狀態(tài),yield的狀態(tài)保存與操作系統(tǒng)的保存線程狀態(tài)很像,但是yield是代碼級別控制的,更輕量級 2 sen

總結(jié)

以上是生活随笔為你收集整理的并发编程——协程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。