像我這種水平的人,已經很難找到一個可以聊聊技術的 Delphi 使用者了 ( 积分: 100 )

  • 主题发起人 主题发起人 QSmile
  • 开始时间 开始时间
白兄,你的群進不出了,滿了
 
用什麼語言不論。

我現在做 IOCP ,遇到一點奇怪的問題。

我服務器用 IOCP. 我把所有連接上的客戶端保存到一個 List 中。在我服務器端關閉時,我從這個 List 中讀出所有連接,closesocket 它們。然後再發出一個 close 事件, PostQueuedCompletionStatus Key 與 Overlapped 都為 nil, 表示端口關閉,工作線程退出。

這時按道理我的工作線程 GetQeuedCompletionStatus 會返回 False 才對,有多少 socket 被關閉就應該得到多少個 GetQeuedCompletionStatus 為 False 才對,但事實不是這樣,可能我關 100 socket 只返回幾個,有時一個也沒有;而後面 PostQueuedCompletionStatus 得退出消息又是正確得到了。這樣就造成我服務器主動關閉時,有資源沒有被 Free (內存池回收)。

為什麼會這樣?

注:我現在的方法是在服務器 Close 時,主動做資源回收,而在工作線程 GetQeuedCompletionStatus 返回 False 時,不做任何處理,直接 continue, 繼續等。但總有點怪怪的。有點不統一。
 
还是累一点,自己写资源释放比较好。
本人尚未涉及网络,所以也没有更多的东西好谈了。[:D]
 
也许你只是发泄一下无赖的生活,
其实未来的路还很长,
你所需要学的还很多.

人生路上不要忘了一个朋友: 书!!!

论坛,QQ群,说实话,到底真实效果如何,我想大家都心里清楚,
只是有些话不适合拿出来说.

我决心离开论坛,专心工作&学习&玩.
你呢 ^_^
 
我继续灌水。。。
???
 
我也在研究IOCP,也写了一些代码,运行不错。
我觉得,你closesocket后,GetQeuedCompletionStatus应当返回接收字节为0的完成消息吧
 
白河愁的群我也想进去转转的说........
 
是呀,高手们都升职做设计了,再有提问的人总是不检索问题,问的N次的东西还在问,没新意,这样高手们就不愿意回答问题了。都潜下去了。
 
已经清出一些位置了。
 
白兄,请问你的群是多少?小弟想加入
 
长江后浪推前浪
前浪死在沙滩上
后浪继续往前闯
同样死在沙滩上
==============
高手死后的墓碑
 
高手还是在的
 
唉,象我这样用过Delphi 1 的人都不用Delphi了。
 
改变不了社会,就要尝试着适应社会.现实很残酷,我们也很无奈,
 
彻底做法,不玩编程很多年咯!
 
曲高和寡
 
大富翁四大吹牛天王: QSmile 我爱PASCAL 清新空气 地质灾害
 
呵呵,你去编程论坛看看吧,那得平均水平绝对在你之上,还有几个Delphi MM超牛(若惜,没翅膀的鸟)
http://www.programbbs.com
 
顶,估计高手都做外包去了

------------------------------------------------------
http://www.waibaoinfo.com 外包信息网
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部