新聞中心
linux是開放源碼系統(tǒng),一直以來就以其簡潔易用而備受歡迎。Linux下有一個(gè)有趣的特性–阻塞與非阻塞,這也使系統(tǒng)處理I/O導(dǎo)致的性能變得更好。所以,一個(gè)問題便可想而知,在Linux下,哪種方式更優(yōu)?

創(chuàng)新互聯(lián)建站一直通過網(wǎng)站建設(shè)和網(wǎng)站營銷幫助企業(yè)獲得更多客戶資源。 以"深度挖掘,量身打造,注重實(shí)效"的一站式服務(wù),以成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè)、移動(dòng)互聯(lián)產(chǎn)品、營銷型網(wǎng)站建設(shè)服務(wù)為核心業(yè)務(wù)。十年網(wǎng)站制作的經(jīng)驗(yàn),使用新網(wǎng)站建設(shè)技術(shù),全新開發(fā)出的標(biāo)準(zhǔn)網(wǎng)站,不但價(jià)格便宜而且實(shí)用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡單易用,維護(hù)方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設(shè)的選擇。
要談?wù)揕inux下的阻塞與非阻塞,先說下它們的區(qū)別。阻塞式I/O意味著系統(tǒng)在等待I/O完成后才會(huì)進(jìn)行下一步操作,也就是應(yīng)用程序請求I/O后,就必須等待它完成后才能繼續(xù)工作;而非阻塞式I/O則表示在等待I/O完成期間,應(yīng)用程序仍可以響應(yīng)其它較低級別的I/O請求。
關(guān)于Linux下哪種方式更優(yōu),也就要看應(yīng)用程序本身的情況。如果應(yīng)用程序只處理少量的簡單的I/O,那么阻塞I/O方式相對簡單。但如果應(yīng)用程序要處理同時(shí)處理多個(gè)請求,或者要盡快處理I/O,那么最好使用非阻塞I/O,可以有效提高處理性能。
例如服務(wù)器應(yīng)用程序,如果使用阻塞I/O,服務(wù)器就會(huì)在處理某個(gè)客戶端的請求后一直等待,無法迅速響應(yīng)其它的客戶端請求。這時(shí),采用非阻塞I/O,服務(wù)器可以不斷接受客戶端的請求,并由多個(gè)獨(dú)立的線程(例如,使用epoll)來處理每個(gè)客戶端的請求,以避免響應(yīng)慢的問題。
當(dāng)然,如果使用阻塞I/O,服務(wù)器只需要少量的代碼,例如:
while (1)
{
client_fd = accept();
n = read(client_fd, buf, len);
write(client_fd, buf, n);
}
從性能來看,有時(shí)候,阻塞I/O能夠讓程序更輕量而高效,而非阻塞I/O則不太可能實(shí)現(xiàn)這種輕量高效性能。
總之,不管使用什么類型的I/O機(jī)制,要想得到最佳性能,最重要的是要根據(jù)應(yīng)用程序的情況,來選擇最恰當(dāng)?shù)姆绞?。本文探討了Linux下的阻塞與非阻塞,雖macbeth然有某種情況下使用非阻塞I/O可以提高性能,但在許多情況下,阻塞I/O仍然是性能佳的選擇。
四川成都云服務(wù)器租用托管【創(chuàng)新互聯(lián)】提供各地服務(wù)器租用,電信服務(wù)器托管、移動(dòng)服務(wù)器托管、聯(lián)通服務(wù)器托管,云服務(wù)器虛擬主機(jī)租用。成都機(jī)房托管咨詢:13518219792
創(chuàng)新互聯(lián)(www.cdcxhl.com)擁有10多年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)、開啟建站+互聯(lián)網(wǎng)銷售服務(wù),與企業(yè)客戶共同成長,共創(chuàng)價(jià)值。
網(wǎng)站名稱:Linux下的阻塞與非阻塞:搞清楚哪種方式更優(yōu)?(linux阻塞與非阻塞)
文章來源:http://www.5511xx.com/article/cojjgph.html


咨詢
建站咨詢
