西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)VC|VC++ → I/O完成端口的實現(xiàn)-Windows編程技巧

I/O完成端口的實現(xiàn)-Windows編程技巧

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站整理時間:2010/10/22 12:21:40字體大。A-A+

作者:佚名點擊:706次評論:0次標簽: Windows 編程 完成端口

  • 類型:文字輸入大。8KB語言:中文 評分:5.0
  • 標簽:
立即下載
I/O完成端口是Windows系統(tǒng)上提供的一種高性能內(nèi)核對象,廣泛被服務(wù)器應(yīng)用程序采用。以前初學(xué)I/O完成端口時困惑于繁多的新概念與很多編程技巧,F(xiàn)在重新溫習(xí)異步I/O,才終于清楚的認知了I/O完成端口于異步I/O的強大!

程序依葫蘆畫瓢原作者的程序,代碼雷同度達90%(后面有下載地址),想自己添加些新的功能(添加可以查看I/O處理進度的功能),但迫于時間,沒有完成,F(xiàn)在我上網(wǎng)是非常困難的,但對我來說也好,這樣就有更多的時間看看書,少上上網(wǎng)了。

純概念性程序,也沒有截圖 下載:http://down.cr173.com/soft1/CopyFileSources.rar

要想編寫一個高性能的服務(wù)器應(yīng)用程序,必須實現(xiàn)一個高效的線程模型。讓太少或者太多的服務(wù)器線程來處理客戶的請求,都可能導(dǎo)致性能問題。例如,如果一個服務(wù)器創(chuàng)建單個線程來處理所有的請求,那么客戶端可能長期等待而得不到響應(yīng),因為服務(wù)器同一時刻只能忙于處理一個請求。當然單個線程也能并發(fā)處理多個請求,當I/O操作被啟動時,它可以從一個請求切換到另一個請求,但是這種結(jié)構(gòu)相當復(fù)雜,并且不能充分利用多處理器的優(yōu)勢。在另一個極端,服務(wù)器可以創(chuàng)建一個大規(guī)模的線程池,這樣幾乎每一個客戶請求都可以由一個專門的線程來處理。這種情形通常會導(dǎo)致線程頻繁切換:大量線程被喚醒,執(zhí)行CPU處理,阻塞等待I/O,然后在請求完成之后又一次阻塞以等待新的請求。如果沒有別的情況,太多的線程將導(dǎo)致過多的上下文切換,因為調(diào)度程序不得不將處理器時間在多個活動線程之間分割。

服務(wù)器的目標是使線程避免不必要的阻塞,盡量減少上下文切換。同時,還要使用多線程來發(fā)揮最大限度的并行。理想的情況是在每一個處理器上運行一個線程來處理一個客戶請求,當處理器上的活動線程完成一個請求時,如果還有其他的請求正在等待,則不阻塞。為了使這一優(yōu)化處理可以有效的進行,應(yīng)用程序必須有一種可行的方法,使得一個正在處理客戶請求的線程在I/O上阻塞時(例如它在處理過程中需要讀取一個文件時)另外一個等待線程被激活。

Windows NT 3.5引進了一系列API使得這個目標的實現(xiàn)變得相對容易。這些API主要聚焦在一個叫完成端口的對象上。在本文中,首先我將講解完成端口的使用,然后再深入其內(nèi)部,向你展示W(wǎng)indows NT中完成端口的實現(xiàn)機制。

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)