真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

I/O多路復(fù)用——select-創(chuàng)新互聯(lián)

    系統(tǒng)提供select函數(shù)來實(shí)現(xiàn)多路復(fù)用I/O模型,select系統(tǒng)調(diào)用是用來讓我們的程序監(jiān)視多個文件句柄的狀態(tài)變化的。程序會停在select這里等待,直到被監(jiān)視的文件句柄有一個或多個發(fā)生了狀態(tài)改變。

目前累計(jì)服務(wù)客戶成百上千,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)公司始終以務(wù)實(shí)、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對領(lǐng)先技術(shù)的掌握、對創(chuàng)意設(shè)計(jì)的研究、對客戶形象的視覺傳遞、對應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。

select API:

I/O多路復(fù)用——select

1)nfds參數(shù)指定被監(jiān)聽的文件描述符的總數(shù)。它通常被設(shè)置為select監(jiān)聽的所有文件描述符中的大值加1,因?yàn)槲募枋龇菑?開始計(jì)數(shù)的。

2)readfds、writefds和exceptfds參數(shù)都是輸入輸出型參數(shù),分別指向可讀、可寫和異常等事件對應(yīng)的文件描述符集合。作為輸入型參數(shù),應(yīng)用程序調(diào)用select參數(shù)時(shí),通過這三個參數(shù)傳入自己感興趣的文件描述符。作為輸出型參數(shù),select調(diào)用返回時(shí),內(nèi)核將修改它們來通知應(yīng)用程序哪些文件描述符已經(jīng)就緒。

    fd_set結(jié)構(gòu)體僅包含一個整型數(shù)組,該數(shù)組的每個元素的每一位(bit)標(biāo)記一個文件描述符。fd_set能容納的文件描述符數(shù)量由FD_SETSIZE指定,這就限制了select能同時(shí)處理的文件描述符的數(shù)量。

系統(tǒng)提供了一系列宏來訪問fd_set結(jié)構(gòu)體中的位:

I/O多路復(fù)用——select

3)timeout參數(shù)用來設(shè)置select函數(shù)的超時(shí)時(shí)間。它是一個timeval結(jié)構(gòu)類型的指針,采用指針參數(shù)是將它設(shè)置為輸入輸出型參數(shù),內(nèi)核將修改它以告訴應(yīng)用程序select等待了多久。

I/O多路復(fù)用——select

select給我們提供了一個微秒級的定時(shí)方式。如果給timeout變量的tv_sec和tv_usec都傳0,則select將立即返回。如果給timeout傳遞NULL,則select將一直阻塞,直到某個文件描述符就緒。

select成功時(shí)返回就緒(可讀、可寫和異常)文件描述符的總數(shù)。

如果在超時(shí)時(shí)間內(nèi)沒有任何文件描述符就緒,select將返回0。

select失敗時(shí)返回-1并設(shè)置errno。如果在select等待期間,程序接收到信號,則select立即返回-1并設(shè)置errno為EINTER。

理解select

select模型的關(guān)鍵在于理解fd_set,假如取fd_set為一字節(jié),fd_set中的每一bit可以對應(yīng)一個文件描述符fd,則1字節(jié)長的fd_set大可以對應(yīng)8個fd。

(1)執(zhí)行

fd_set set;
FD_ZERO(&set);

  則set用位表示是0000 0000。

(2)若fd=5,執(zhí)行

FD_SET(fd, &set);

  后set變?yōu)?0001 0000(第5位設(shè)置為1)。

(3)若再加入fd = 2,fd = 1則set變?yōu)?0001 0011。

(4)執(zhí)行

select(6, &set, NULL, NULL, NULL);

  阻塞等待。

(5)若fd = 1, fd = 2上都發(fā)生可讀事件,則select返回,此時(shí)set變?yōu)?000 0011。

  注意:沒有事件發(fā)生的fd = 5被清空。

select模型的特點(diǎn):

(1)可監(jiān)控的文件描述符個數(shù)取決于sizeof(fd_set)的值,一般為512或1024。假如服務(wù)器上sizeof(fd_set)的值為512,每個bit表示一個文件描述符,則服務(wù)器上支持的大文件描述符是512 * 8 = 4096。如果想要調(diào)整fd_set的大小,可以通過編譯內(nèi)核或其他方法。

(2)將fd加入select監(jiān)控的同時(shí),還要再使用一個數(shù)組Array保存放到select監(jiān)控集中的fd,一是用于在select返回后,Array作為原數(shù)據(jù)和fd_set進(jìn)行FD_ISSET判斷。二是select返回后會把以前加入的但并無事件發(fā)生的fd清空,所以每次開始select前都要重新從Array取得fd逐一加入(FD_ZERO最先),掃描Array的同時(shí)取得fd的大值max_fd,用于select的第一個參數(shù)。

(3)select模型必須在select前遍歷Array(加fd,取max_fd),select返回后遍歷Array(FD_ISSET判斷是否有事件發(fā)生)。

select的優(yōu)點(diǎn):

         select的性能遠(yuǎn)遠(yuǎn)高于多進(jìn)程、多線程。

select的缺點(diǎn):

(1)select監(jiān)視的文件描述符數(shù)量是有限的

(2)每次調(diào)用select,都需要把fd集合從用戶態(tài)拷貝到內(nèi)核態(tài),這個開銷在fd很多時(shí)會很大,導(dǎo)致服務(wù)器性能下降。

(3)每次調(diào)用都要在內(nèi)核遍歷傳遞進(jìn)來的所有fd,這個開銷在fd很多時(shí)也很大。

使用select 的TCP服務(wù)器

I/O多路復(fù)用——select

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)頁題目:I/O多路復(fù)用——select-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://weahome.cn/article/iiegg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部