經過對一段時間對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 <>
= .