欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

協(xié)程三篇之一(協(xié)程初接觸)

系統(tǒng) 1932 0

賴勇浩(http://laiyonghao.com)

協(xié)程三篇之一(協(xié)程初接觸)

協(xié)程,又稱微線程和纖程等,據(jù)說源于 Simula 和 Modula-2 語言(我沒有深究,有錯(cuò)請(qǐng)指正),現(xiàn)代編程語言基本上都有支持,比如 Lua、ruby 和最新的 Google Go,當(dāng)然也還有最近很讓我驚艷的 falcon。協(xié)程是用戶空間線程,操作系統(tǒng)其存在一無所知,所以需要用戶自己去做調(diào)度,用來執(zhí)行協(xié)作式多任務(wù)非常合適。其實(shí)用協(xié)程來做的東西,用線程或進(jìn)程通常也是一樣可以做的,但往往多了許多加鎖和通信的操作。

下面是生產(chǎn)者消費(fèi)者模型的基于搶占式多線程編程實(shí)現(xiàn)(偽代碼):
// 隊(duì)列容器
var q := new queue
// 消費(fèi)者線程
loop
lock(q)
get item from q
unlock(q)
if item
use this item
else
sleep
// 生產(chǎn)者線程
loop
create some new items
lock(q)
add the items to q
unlock(q)

由以上代碼可以看到線程實(shí)現(xiàn)至少有兩點(diǎn)硬傷:

1、對(duì)隊(duì)列的操作需要有顯式/隱式(使用線程安全的隊(duì)列)的加鎖操作。

2、消費(fèi)者線程還要通過 sleep 把 CPU 資源適時(shí)地“謙讓”給生產(chǎn)者線程使用,其中的適時(shí)是多久,基本上只能靜態(tài)地使用經(jīng)驗(yàn)值,效果往往不由人意。

而使用協(xié)程可以比較好的解決這個(gè)問題,下面來看一下基于協(xié)程的生產(chǎn)者消費(fèi)者模型實(shí)現(xiàn)(偽代碼):
// 隊(duì)列容器
var q := new queue
// 生產(chǎn)者協(xié)程
loop
while q is not full
create some new items
add the items to q
yield to consume
// 消費(fèi)者協(xié)程
loop
while q is not empty
remove some items from q
use the items
yield to produce

可以從以上代碼看到之前的加鎖和謙讓 CPU 的硬傷不復(fù)存在,但也損失了利用多核 CPU 的能力。所以選擇線程還是協(xié)程,就要看應(yīng)用場(chǎng)合了。下面簡(jiǎn)單談一下協(xié)程常見的用武之地,其中之一是狀態(tài)機(jī),能夠產(chǎn)生更高可讀性的代碼;還有就是并行的角色模型,這在游戲開發(fā)中比較常見;以及產(chǎn)生器, 有助于對(duì)輸入/輸出和數(shù)據(jù)結(jié)構(gòu)的通用遍歷。

協(xié)程雖然如此之好,看是很長(zhǎng)時(shí)間以來,因?yàn)槭艿交诙褩5淖永虒?shí)現(xiàn)的限制,并沒有多少語言在其實(shí)語言或庫(kù)中支持協(xié)程,所以線程作為一個(gè)替代者(當(dāng)然,線程也有其超越協(xié)程之處)被廣泛接受了。但是在今天,很多語言都內(nèi)建了協(xié)程的支持,甚至是 C/C++ 語言。MS Windows 2000 以后的版本,都支持所謂的 Fiber,即纖程,其實(shí)就是協(xié)程的別稱;在開源平臺(tái),POSIX 標(biāo)準(zhǔn)也定義了協(xié)程相關(guān)的標(biāo)準(zhǔn),GNU Portable Threads 實(shí)現(xiàn)了跨平臺(tái)的用戶空間線程,即協(xié)程的另一種別稱。在這百花齊放的時(shí)節(jié),正是我們好好學(xué)習(xí)和利用它的時(shí)機(jī)。

接下來我將在第二篇中談?wù)動(dòng)螒蛑性囉脜f(xié)程的三個(gè)場(chǎng)合。

協(xié)程三篇之一(協(xié)程初接觸)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 一级毛片视频播放 | 成人毛片100免费观看 | 黄色电影在线免费观看 | 影音先锋欧美资源 | 男女激情啪啪 | 欧美第5页| 久久久综合视频 | 成人年鲁鲁在线观看视频 | 久久亚洲精品国产精品777777 | 久久精品国产精品亚洲综合 | 日本欧美一区二区三区不卡视频 | 99精品一区二区免费视频 | 亚洲精品久久久久久久久久久久久 | 日本不卡视频在线观看 | 亚州AV无码乱码色情 | 亚洲精品成人a | 国产精品久久久久国产A级 首页亚洲国产丝袜长腿综合 | 人人性人人性碰国产 | 国产婷婷精品av在线 | 久久国产精品视频一区 | 国产精品爱久久久久久久小说 | 欧美午夜a级限制福利片 | www.499| 丁香五月亚洲综合在线 | 日韩在线精品 | 手机在线一区二区三区 | 免费视频精品一区二区 | 日韩在线播放第一页 | 精品欧美在线 | 国产亚洲精品久久久久久无码网站 | 天天操天天舔 | 久久精品小视频 | 久久亚洲欧美日韩精品专区 | 全黄性性激高免费视频 | 亚洲一区二区免费 | 国产自啪啪 | 国产精品久久久久无码av | 亚洲精品久久久久久久久久吃药 | 久久草资源费视频在线观看 | 成年人看的羞羞网站 | 91婷婷|