新聞中心
linux設(shè)置實(shí)現(xiàn)非阻塞I/O的方法

創(chuàng)新互聯(lián)建站致力于網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì),成都網(wǎng)站設(shè)計(jì),集團(tuán)網(wǎng)站建設(shè)等服務(wù)標(biāo)準(zhǔn)化,推過(guò)標(biāo)準(zhǔn)化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進(jìn)行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場(chǎng)競(jìng)爭(zhēng)中脫穎而出。 選擇創(chuàng)新互聯(lián)建站,就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!
I/O是計(jì)算機(jī)中的一種非常重要的基礎(chǔ)操作,它的作用是將程序的輸入和輸出從程序中分離出來(lái),使程序可以聚焦于核心的處理過(guò)程。非阻塞I/O又稱(chēng)為Nonblocking I/O,它是一種在程序沒(méi)有獲取到想要的數(shù)據(jù)的情況下程序就不會(huì)阻塞,而可以進(jìn)行其他操作的方式,使得系統(tǒng)能夠更好的利用系統(tǒng)資源,提高效率。
Linux操作系統(tǒng)可以很容易的實(shí)現(xiàn)非阻塞I/O,只要在系統(tǒng)文件調(diào)用或者讀寫(xiě)操作時(shí),將參數(shù)中的阻塞標(biāo)志設(shè)置為fd_set NONBLOCK,就可以使文件調(diào)用或者讀寫(xiě)操作變成非阻塞模式。實(shí)現(xiàn)代碼如下:
int flags;
flags = fcntl(socket,F_GETFL,0);
fcntl(socket,F_SETFL,flags | O_NONBLOCK);
上面的代碼主要由以下步驟組成:
1. 使用fcntl()函數(shù)獲取file descriptor的flags標(biāo)志。
2. 將flags標(biāo)志設(shè)置成可以執(zhí)行非阻塞的O_NONBLOCK,
3. 使用fcntl()函數(shù)設(shè)置file descriptor的flags標(biāo)志。
通過(guò)以上代碼,Linux操作用戶可以很快速的實(shí)現(xiàn)非阻塞I/O。另外,也可以利用poll, select函數(shù)來(lái)監(jiān)測(cè)某個(gè)file descriptor是否可以進(jìn)行非阻塞操作,如果可以,就可以執(zhí)行非阻塞操作,如果不能,就會(huì)等待直到可以執(zhí)行非阻塞操作。
總的來(lái)說(shuō),Linux設(shè)置實(shí)現(xiàn)非阻塞I/O的方法很簡(jiǎn)單,不需要做太多的配置以及編程,并且可以有效的提高程序的運(yùn)行效率,提升用戶體驗(yàn)。
香港云服務(wù)器機(jī)房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專(zhuān)業(yè)云服務(wù)器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務(wù),提供一站式解決方案。香港服務(wù)器-免備案低延遲-雙向CN2+BGP極速互訪!
新聞標(biāo)題:Linux設(shè)置實(shí)現(xiàn)非阻塞I/O的方法(linux設(shè)置非阻塞)
路徑分享:http://m.5511xx.com/article/coeoeip.html


咨詢
建站咨詢
