經過對一段時間對IOCP的學習和研究。對IOCP的流程有了一定的了解。
後面對一段時間的IOCP優化和實際項目的使用,在DIOCP中加入了日志文件記錄功能,利用api編寫了一個客戶端通信類,等解決了很多bug,並已使用在公司的項目中,現運行穩定。今天對IOCP退出時資源的釋放,做了最後一步研究和優化。
為了方便大家學習,我把這個項目命名為DIOCP,上傳在google的SVN項目中
https:
大家可以通過svn下載代碼,裡面我寫了一個Echo的測試Demo,准備後續加入聊天等Demo。
--IOCP退出資源的管控研究
現在在項目中使用的IOCP退出的過程是。
////////////=;
對IO內存池也進行了一些優化,主要加入了資源回歸的監控
= ///////////// <summary> ////// </summary> /// <param name="pvIOData"> (POVERLAPPEDEx) </param> /// <summary> ////// </summary> /// <returns>/// </returns> /// <summary> ////// </summary> /// <returns>/// </returns> // Destroy; //// giveBackIOData( == = = CreateEvent(, True, True, FHead = == = = =====//= Result = //=//直接借走<增加使用計數器>// FUsingCount > //= = = ////還原大小<分配時的大小>=//= lvData <> //=////== = = = = FUseableCount + TIODataMemPool.giveBackIOData( (pvIOData.pre <> ) (pvIOData.next <> ) (pvIOData = FHead) //////// FUsingCount = FTail = = == lvPre <> = = //= = = = == === lvRet = WAIT_OBJECT_ == __IODATA_instance <> = .