黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

ioriiod0/orchid · GitHub

系統(tǒng) 2624 0

ioriiod0/orchid · GitHub

什么是orchid?

orchid是一個(gè)構(gòu)建于強(qiáng)大的boost庫基礎(chǔ)上的C++庫,類似于python下的gevent/eventlet,為用戶提供基于協(xié)程的并發(fā)模型。

什么是協(xié)程:

協(xié)程,顧名思義,協(xié)作式程序,其思想是,一系列互相依賴的協(xié)程間依次使用CPU,每次只有一個(gè)協(xié)程工作,而其他協(xié)程處于休眠狀態(tài)。協(xié)程在控制離開時(shí)暫停執(zhí)行,當(dāng)控制再次進(jìn)入時(shí)只能從離開的位置繼續(xù)執(zhí)行。 協(xié)程已經(jīng)被證明是一種非常有用的程序組件,不僅被python、lua、ruby等腳本語言廣泛采用,而且被新一代面向多核的編程語言如golang rust-lang等采用作為并發(fā)的基本單位。

協(xié)程可以被認(rèn)為是一種用戶空間線程,與傳統(tǒng)的搶占式線程相比,有2個(gè)主要的優(yōu)點(diǎn):

  • 與線程不同,協(xié)程是自己主動(dòng)讓出CPU,并交付他期望的下一個(gè)協(xié)程運(yùn)行,而不是在任何時(shí)候都有可能被系統(tǒng)調(diào)度打斷。因此協(xié)程的使用更加清晰易懂,并且多數(shù)情況下不需要鎖機(jī)制。
  • 與線程相比,協(xié)程的切換由程序控制,發(fā)生在用戶空間而非內(nèi)核空間,因此切換的代價(jià)非常的小。

green化

術(shù)語“green化”來自于python下著名的協(xié)程庫greenlet,指改造IO對(duì)象以能和協(xié)程配合。某種意義上,協(xié)程與線程的關(guān)系類似與線程與進(jìn)程的關(guān)系,多個(gè)協(xié)程會(huì)在同一個(gè)線程的上下文之中運(yùn)行。因此,當(dāng)出現(xiàn)IO操作的時(shí)候,為了能夠與協(xié)程相互配合,只阻塞當(dāng)前協(xié)程而非整個(gè)線程,需要將io對(duì)象“green化”。目前orchid提供的green化的io對(duì)象包括:

  • tcp socket(還不支持udp)
  • descriptor(目前僅支持非文件類型文件描述符,如管道和標(biāo)準(zhǔn)輸入/輸出,文件類型的支持會(huì)在以后版本添加)
  • timer (定時(shí)器)
  • signal (信號(hào))

chan:協(xié)程間通信

chan這個(gè)概念引用自golang的chan。每個(gè)協(xié)程是一個(gè)獨(dú)立的執(zhí)行單元,為了能夠方便協(xié)程之間的通信/同步,orchid提供了chan這種機(jī)制。chan本質(zhì)上是一個(gè)阻塞消息隊(duì)列,后面我們將看到,chan不僅可以用于同一個(gè)調(diào)度器上的協(xié)程之間的通信,而且可以用于不同調(diào)度器上的協(xié)程之間的通信。

多核

建議使用的scheduler per cpu的的模型來支持多核的機(jī)器,即為每個(gè)CPU核心分配一個(gè)調(diào)度器,有多少核心就創(chuàng)建多少個(gè)調(diào)度器。不同調(diào)度器的協(xié)程之間也可以通過chan來通信。協(xié)程應(yīng)該被創(chuàng)建在哪個(gè)調(diào)度器里由用戶自己決定。

進(jìn)一步信息請閱讀doc目錄下tutorial。如果您發(fā)現(xiàn)任何bug或者有任何改進(jìn)意見,請聯(lián)系 ioriiod0@gmail.com

ioriiod0/orchid · GitHub


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

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

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

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

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論