Node.js教程(cheng)系列~目錄(lu)
Node.js這(zhe)個東西在(zai)近(jin)幾(ji)年(nian)火(huo)起(qi)來了(le),而且會一(yi)直火(huo)下(xia)去(qu),無論在(zai)infoq還(huan)是在(zai)cnblogs,csdn上(shang),都可以到(dao)處看到(dao)它(ta)(ta)的(de)(de)(de)樣(yang)子,它(ta)(ta)主推的(de)(de)(de)應該就是異步式I/O 吧(ba),是的(de)(de)(de),設計(ji)(ji)的(de)(de)(de)很(hen)完(wan)美(mei),很(hen)吸引人,雖(sui)然它(ta)(ta)與正(zheng)常思維是不同(tong)的(de)(de)(de),但是當你真(zhen)正(zheng)認識它(ta)(ta)后,也會足夠的(de)(de)(de)讓你愛上(shang)它(ta)(ta)!Node.js確實改(gai)變了(le)我的(de)(de)(de)編程觀念(nian),改(gai)變了(le)我對(dui)計(ji)(ji)算機系統的(de)(de)(de)認識!
名人總結的話,我們應該回味個幾百次
同步式I/O: 線(xian)(xian)程(cheng)(cheng)在執行(xing)中如(ru)果遇到(dao)磁盤讀寫或網絡通(tong)信(統(tong)(tong)稱為I/O操(cao)(cao)(cao)作(zuo)),通(tong)常要耗(hao)費(fei)較長(chang)的(de)時(shi)間(jian),這(zhe)(zhe)時(shi)操(cao)(cao)(cao)作(zuo)系統(tong)(tong)會剝(bo)奪(duo)這(zhe)(zhe)個線(xian)(xian)程(cheng)(cheng)的(de)CPU控制權,使其(qi)暫停(ting)執行(xing)(阻塞(sai)了當前線(xian)(xian)程(cheng)(cheng)中剩下的(de)工作(zuo),當耗(hao)時(shi)操(cao)(cao)(cao)作(zuo)完成(cheng)后(hou),才繼續(xu)(xu)執行(xing)剩下的(de)代碼),同時(shi)將(jiang)資源讓給其(qi)他的(de)工作(zuo)線(xian)(xian)程(cheng)(cheng),這(zhe)(zhe)種線(xian)(xian)程(cheng)(cheng)調度方(fang)式(shi)稱為阻塞(sai)。當I/O操(cao)(cao)(cao)作(zuo)完畢,操(cao)(cao)(cao)作(zuo)系統(tong)(tong)將(jiang)這(zhe)(zhe)個線(xian)(xian)程(cheng)(cheng)的(de)阻塞(sai)狀態解除(chu),恢復其(qi)對(dui)CPU的(de)控制權,令其(qi)繼續(xu)(xu)執行(xing)。這(zhe)(zhe)種 I/O模式(shi)就(jiu)是通(tong)常的(de)同步式(shi)I/O(Synchronous I/O).
異步式I/O: 當(dang)(dang)線程(cheng)遇到I/O操(cao)作(zuo)時,不會以(yi)阻(zu)塞的(de)(de)(de)方式等待(dai)I/O操(cao)作(zuo)的(de)(de)(de)完成(cheng)或數據的(de)(de)(de)返(fan)回,而只(zhi)是將(jiang)I/O請求發送(song)到操(cao)作(zuo)系統,繼續執(zhi)(zhi)行下一條語(yu)句(ju)。當(dang)(dang)操(cao)作(zuo)系統完成(cheng)I /O操(cao)作(zuo)時,以(yi)事(shi)件(jian)(jian)的(de)(de)(de)形式通(tong)知執(zhi)(zhi)行I/O操(cao)作(zuo)的(de)(de)(de)線程(cheng),線程(cheng)會在特定時候(hou)處理(li)這(zhe)個事(shi)件(jian)(jian)。為了處理(li)異步I/O,線程(cheng)必(bi)須(xu)有事(shi)件(jian)(jian)循環,不斷(duan)地檢(jian)查有沒有未處理(li)的(de)(de)(de)事(shi)件(jian)(jian),依次處理(li)。(有個事(shi)件(jian)(jian)隊(dui)列(lie)機制,它永遠的(de)(de)(de)輪訓著,當(dang)(dang)有需(xu)要處理(li)的(de)(de)(de)事(shi)件(jian)(jian)時,就會處理(li)這(zhe)個事(shi)件(jian)(jian)的(de)(de)(de)回調方法(fa))
完(wan)善(shan)的事件(jian)輪詢機制(zhi),改變(bian)了(le)程序的運行方式,改變(bian)了(le)程序員的思維(wei)!
Node.js教程系列~目錄
NodeJS實例系列
環境搭建系列
Node.js~sails.js~package.json的作用(New)
Node.js與Sails系列
擴展組件系列
Node.js與Express
Node.js的事件機制
Node.js的異(yi)步(bu)I/O機(ji)制
Node.js與MongoDb
Node.js與Sqlserver
永久更新中...