新聞中心
I/O是指computer(計算機)中傳輸數(shù)據(jù)的運行機制,是輸入輸出操作最核心的技術(shù)。linux操作系統(tǒng)是一個通用的操作系統(tǒng),經(jīng)常使用I/O處理大量的網(wǎng)絡數(shù)據(jù)。它的I/O訓練機制有阻塞式I/O和非阻塞式I/O。

成都創(chuàng)新互聯(lián)2013年至今,先為云巖等服務建站,云巖等地企業(yè),進行企業(yè)商務咨詢服務。為云巖企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
阻塞式I/O是指,當操作者要求從磁盤讀取數(shù)據(jù)塊,或者要將數(shù)據(jù)寫入磁盤塊中時,程序在I/O操作結(jié)束前會進入阻塞狀態(tài),而這段時間,操作者不能使用。這樣會阻塞操作者,影響其他操作者的運行,因此阻塞式I/O不適合于Linux操作系統(tǒng)。
非阻塞式I/O機制(Non-blocking I/O)是Linux操作系統(tǒng)中常用的,也是極其有效的I/O運行機制。它不會阻塞操作者,使操作者仍可以持續(xù)性的處理操作,充分的利用你系統(tǒng)的資源。
一般情況下,打開一個文件句柄后,將文件描述符設置為非阻塞模式,示例代碼如下:
“`c
#include
int flags;
int sockfd = open(“socket.txt”, O_RDWR|O_NONBLOCK);
if (sockfd = -1)
{
printf(“error”);
return-1;
}
flags = fcntl(sockfd, F_GETFL);
flags |= O_NONBLOCK;
fcntl(sockfd, F_SETFL, flags);
在Linux中,還可以從系統(tǒng)調(diào)用的命令行中設置非阻塞I/O,示例如下:
```
$ bash
$ sockfd=open("socket.txt", O_RDWR)
$ fcntl sockfd, F_SETFL, O_NONBLOCK
在Linux系統(tǒng)中,非阻塞I/O機制主要用于處理大量的實時數(shù)據(jù),比如聊天室程序,電子游戲和網(wǎng)站等,大大減少了負載,提高了處理能力,也使得應用程序更加可靠。
綜上,I/O機制是Linux操作系統(tǒng)開發(fā)過程中一個重要的技術(shù),非阻塞式I/O是其中最主要的一種,它適用于處理大量的實時數(shù)據(jù),能夠有效的提高處理能力,使得應用程序更加可靠。
香港云服務器機房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務,提供一站式解決方案。香港服務器-免備案低延遲-雙向CN2+BGP極速互訪!
標題名稱:I/OLinux下非阻塞I/O運行機制(linux非阻塞)
鏈接分享:http://m.5511xx.com/article/dhoecjs.html


咨詢
建站咨詢
