<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          冒著被女朋友打的風(fēng)險(xiǎn),帶你了解阻塞、非阻塞、同步、異步

          共 1941字,需瀏覽 4分鐘

           ·

          2021-04-02 15:13


          看電影

          終于周末了,今天天氣真好呀,聽(tīng)說(shuō)《阿凡達(dá)》重新上映了!我們趕緊去看吧!
          當(dāng)女朋友同意去看電影了,你穿好鞋收拾好了,女朋友突然說(shuō)等等我收拾下!一個(gè)漫長(zhǎng)的等待將要開(kāi)始了,洗澡、補(bǔ)水、防曬...... 若干年后..... 。你啥也不敢,干巴巴的看著她一點(diǎn)點(diǎn)的化妝,當(dāng)收拾好了打車到電影院天色已經(jīng)見(jiàn)晚!


          女友要收拾打扮的時(shí)候,你在旁邊啥也不干等待著她收拾直到她收拾完一起出發(fā),這個(gè)過(guò)程就是同步

          幾周后.......

          哎哎哎!聽(tīng)說(shuō)《哥斯拉大戰(zhàn)金剛》上映啦!同事說(shuō)很好看哎,我們一起去看吧!
          當(dāng)女朋友同意要去看的時(shí)候,突然想起來(lái)上次看電影前漫長(zhǎng)的等待,不僅陷入了長(zhǎng)思......
          不能在那干等啊!對(duì)頭!LOL 排位賽我怎么忘了呢!這個(gè)時(shí)間我還能打幾百把游戲呢!
          聰明的你在女朋友收拾的過(guò)程中不在死等啥也不干,而是去打游戲了,當(dāng)你女朋友收拾完后通知你出發(fā)。這就是異步

          通過(guò)上面的看電影不難看出,在第二次看電影前等女朋友收拾的過(guò)程中你在打游戲,打游戲和收拾兩件事在同時(shí)發(fā)生,不需要雙方互相等待,這就是異步為什么比同步高效。

          上述的同步和異步是線程間調(diào)用,是調(diào)用者和被調(diào)用者之間協(xié)同工作的方式。
          同步是調(diào)用方等待被調(diào)用方執(zhí)行完成后再執(zhí)行;
          異步是兩方一起干,被調(diào)用者完成后通知調(diào)用者即可。


          打電話

          上次等女朋友看電影,她生氣我等她沒(méi)有耐心,這不打電話問(wèn)問(wèn)小松怎么哄女朋友!
          小松女朋友接的,小松好像在忙,我就等了一會(huì)直到他接到電話詢問(wèn)他怎么辦!這種一直等待的方式屬于阻塞IO
          1、讓小松接電話:調(diào)用 read()  函數(shù)讀取數(shù)據(jù),沒(méi)有數(shù)據(jù)就一直等待,用戶線程進(jìn)入阻塞狀態(tài)。
          2、老王,剛才忙,找我什么事?:  數(shù)據(jù)就緒后,內(nèi)核將數(shù)據(jù)拷貝到用戶線程,用戶此時(shí)解除阻塞狀態(tài)。


          信號(hào)不好,電話突然中斷.......
          再打過(guò)去他又不在,我沒(méi)有和上次一樣一直等待,而是掛斷了去忙其他事情了,過(guò)了一會(huì)再打,又不在, 再打,又不在......  打了很多遍終于接通了,這種方式屬于非阻塞IO
          1、讓小松接電話:調(diào)用 read(設(shè)置為非阻塞), 無(wú)數(shù)據(jù),立即返回;
          2、讓小松接電話:調(diào)用read(設(shè)置為非阻塞), 無(wú)數(shù)據(jù),立即返回;
          3、 .......
          4、老王,剛才忙,找我什么事?:內(nèi)核數(shù)據(jù)就緒,內(nèi)核將數(shù)據(jù)拷貝到用戶線程。
          可見(jiàn),這種非阻塞一般是在一個(gè) while 循環(huán)中不斷調(diào)用 read, 如果數(shù)據(jù)未就緒,用戶線程將處于忙輪詢,CPU 使用率會(huì)很高。

          買禮物

          詢問(wèn)小松后,給女朋友準(zhǔn)備了兩份小驚奇!
          快遞遲遲不到,要不打電話問(wèn)問(wèn)快遞員!
          我打電話快遞員說(shuō)還沒(méi)有到,到了會(huì)通知我,我就接著干我的事情去了。快遞小哥等待了一會(huì)后,快遞到達(dá)菜鳥(niǎo)驛站了,收到快遞小哥的電話后,馬不停蹄的去取快遞,最終快遞被我扛回了家。這就是所謂的同步IO

          reactor模型:
          1、打電話詢問(wèn)快遞是否到了 :即調(diào)用 epoll/poll/select 函數(shù);
          2、親,您的快遞到來(lái),到菜鳥(niǎo)驛站提取:即 epoll 函數(shù)返回,通知你某個(gè) fd 上面有數(shù)據(jù)到來(lái);
          3、麻溜的去取快遞:即調(diào)用 read 函數(shù)從內(nèi)核讀取數(shù)據(jù),此時(shí)調(diào)用數(shù)據(jù)一定存在;
          注意:同步 IO 的特點(diǎn)是:第三步時(shí)候主動(dòng)調(diào)用 read 時(shí)候,需要從內(nèi)核 copy 數(shù)據(jù)到用戶態(tài),這個(gè)過(guò)程用戶態(tài)是需要等待的,即 reactor 是屬于同步IO


          還有一個(gè)禮物沒(méi)到呢!打電話詢問(wèn)快遞小哥,也沒(méi)有到,然后我就去洗衣服去了。過(guò)了一會(huì)快遞到達(dá)菜鳥(niǎo)驛站后快遞小哥直接將快遞搬到了我的家門口,然后通知我快遞到了。這就是異步IO

          proactor模型:
          1、打帶你詢問(wèn)快遞是否到了:調(diào)用 aio_read(buf), 并傳遞一個(gè)用戶讀取緩沖區(qū),立即返回。
          2、親,你的快遞已經(jīng)到了:signal/callback 的方式通知你,內(nèi)核已經(jīng)將數(shù)據(jù)從拷貝到了你傳遞進(jìn)來(lái)的 buf 中了。您可以直接使用了。不需要去等待。

          總結(jié)
                  異步 IO 和同步 IO 的關(guān)鍵點(diǎn)在于:用戶進(jìn)程是否需要等待把數(shù)據(jù)從內(nèi)核空間拷貝到用戶空間。和阻塞非阻塞沒(méi)關(guān)系。只要用戶進(jìn)程等待數(shù)據(jù)拷貝就是同步
                  阻塞和非阻塞關(guān)鍵點(diǎn)在于:阻塞和非阻塞都有等待數(shù)據(jù)拷貝過(guò)程。不過(guò)非阻塞IO 不會(huì)再?zèng)]有數(shù)據(jù)時(shí)傻等
          瀏覽 24
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  波多野结衣一品二品免费观看AV | 精品久久福利视频 | 国产精品成人片 | 五月丁香花婷婷 | 操逼动漫视频 |