关于hp-socket的IocpServer

涂飞 发布于 2013/10/25 16:35
阅读 861
收藏 0

@伤神小怪兽 你好,想跟你请教个问题:

您好。我在阅读您的hp-socket代码,关于IocpServer,有个疑问想请教一下。
假设某connection的receive过来了,然后线程1处理该receive;在处理的过程中,该connection的另一个receive又过来了,线程2处理了该receive,但是发生了错误,于是connection在handleError中会被close掉;但此时,线程1还正在处理该connection的receive,这有可能会出现问题:因为对应TSocketObj与TBufferObj都被释放掉了(尽管有可能仅仅时放入了freelist中,因为如果freelist只有一个obj的话,又可能会被接下来的connection用掉,导致两个connection公用的问题)。

请问IocpServer对上述的情况作了处理吗?我读代码没有发现。谢谢

加载中
0
伤神小怪兽
伤神小怪兽

一个socket不可能同时处理两个以上 OnReceive

伤神小怪兽
伤神小怪兽
回复 @涂飞 : 那就要从其它方面解决,例如把业务处理操作放到其它线程。
涂飞
涂飞
我在实际的运行中发现是有可能的。 还是 你的意思是要自己对同一个socket的receive作同步?但是这样做的话 会影响到并发效率吧。比如 某个connection的reveive操作比较长
0
伤神小怪兽
伤神小怪兽

引用来自“伤神小怪兽”的答案

一个socket不可能同时处理两个以上 OnReceive

hp-socket 中,TCP不可能,但UDP可能。请关注hp-socket最新版,即将发布。

返回顶部
顶部