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

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


咨詢
建站咨詢
