IOCP中TCP投递读写事件,缓冲区大小问题?

DEEEEEEEEEEX 2011-10-14 03:45:28
在IOCP中,如果我投递大量TCP读请求,且这些读请求用的缓冲区都是在一个页面以内的,这样会有问题么。

求教???
...全文
265 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
DEEEEEEEEEEX 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zwb0540822 的回复:]

解决没,发代码吧。感觉你的代码有问题。
[/Quote]
谢谢,其实已经解决了,就是原理不理解,为什么两个缓冲区在同一个页面上,同时投递就会有问题。

我把这个两个缓冲区分别放到两个页面上,就没有问题。
疯魔症 2011-10-17
  • 打赏
  • 举报
回复
解决没,发代码吧。感觉你的代码有问题。
DEEEEEEEEEEX 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 inzaghi97 的回复:]

读请求用的缓冲区,操作系统申请的,不会出现这个问题
[/Quote]

acceptex应该是读请求吧,两块内存在一个页面里,很快就死了。
我要戒烟了 2011-10-14
  • 打赏
  • 举报
回复
读请求用的缓冲区,操作系统申请的,不会出现这个问题
疯魔症 2011-10-14
  • 打赏
  • 举报
回复
我理解有误。。。抱歉
疯魔症 2011-10-14
  • 打赏
  • 举报
回复
你说的页指什么,内存的页么。
这里是操作系统分配的,不应该分配到同一个内存页上的。

[Quote=引用 8 楼 deeeeeeeeeex 的回复:]

引用 7 楼 zwb0540822 的回复:

每接收一个连接,就会malloc一块空间做接收区。

这就是我所说的问题,如果同时两个连接,申请的内存在同一个页面上,就蹦了。
[/Quote]
DEEEEEEEEEEX 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zwb0540822 的回复:]

每接收一个连接,就会malloc一块空间做接收区。
[/Quote]
这就是我所说的问题,如果同时两个连接,申请的内存在同一个页面上,就蹦了。
疯魔症 2011-10-14
  • 打赏
  • 举报
回复
每接收一个连接,就会malloc一块空间做接收区。
DEEEEEEEEEEX 2011-10-14
  • 打赏
  • 举报
回复
缓冲区不重叠,但几个缓冲区在一个页面上。
DEEEEEEEEEEX 2011-10-14
  • 打赏
  • 举报
回复
(1)我刚为acceptex投递1K缓冲区,我客户端一次性开了1000个TCP连接,发现服务器端由莫名的问题。

(2)而我为每个缓冲区设置页面大小,1000个TCP连接connect,就没有任何问题。

是不是如果投递了一个缓冲区,IOCP把缓冲区所在的那个页面锁定了,在投递acceptex的时候,也用这个页面的其他缓冲区,IOCP是不是会出错。

vilnies 2011-10-14
  • 打赏
  • 举报
回复
我觉得缓冲区不重复或者重叠就没问题。至于是否和页面有关,没听过耶~
luciferisnotsatan 2011-10-14
  • 打赏
  • 举报
回复
啥问题?没看明白。
healer_kx 2011-10-14
  • 打赏
  • 举报
回复
会有什么问题?缓冲区可以设置大一点。
cocoabird 2011-10-14
  • 打赏
  • 举报
回复
数据太多缓冲区会崩的

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧