关于单IO数据的问题,分不够再加。。。

chjshen 2009-07-20 05:13:31
问题如下:
这个单IO数据是什么时候New最合适,什么时候Delete呢?
是一个Sock对应一个单IO数据还是一个Sock的一次IO操作对应一个新的单IO数据?
还有就是在操作这个单IO数据的时候,因为是在多线程环境中,是不是需要对其进行加锁解锁处理呢?也就是它是线程安全的吗?
本人比较菜,希望高手帮忙解答一下
...全文
81 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chjshen 2009-07-23
  • 打赏
  • 举报
回复
结贴了
chjshen 2009-07-23
  • 打赏
  • 举报
回复
谢谢有点明白了
gotooker 2009-07-22
  • 打赏
  • 举报
回复
回楼上,可以的,可以一个socket对应一个new,收到数据后继续使用这个IODATA,直到连接断开后free这个IO
DATA
oyljerry 2009-07-21
  • 打赏
  • 举报
回复
接收到数据的时候,new一块数据来复制IO数据,然后当你使用完了的时候就可以delete了
一次Sock IO操作就对应一个新的IO数据
复制数据后,如果有多个线程同时处理这一块区域,就要同步
chjshen 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 oyljerry 的回复:]
接收到数据的时候,new一块数据来复制IO数据,然后当你使用完了的时候就可以delete了
一次Sock IO操作就对应一个新的IO数据
复制数据后,如果有多个线程同时处理这一块区域,就要同步
[/Quote]
谢谢有点明白了,但是又有一个新问题就是
一次SOCK IO操作就对应一个新的IO数据,这样是不是说 我一次WSARecv的时候NEW一个IO数据,这样不是内存很快就消耗完了吗?或者一次WSARecv的时候NEW一个IO数据,=到收到数据后COPY数据出来后,再Free,这样的话,是不是需要大量的内存操作呀而影响性能呀

一句话,就是我如果在WSASOCK的时候一次性建立一个单句柄和一个单IO DATA,然后 对IO Data进行重复使用不行吗?
udknight 2009-07-21
  • 打赏
  • 举报
回复
1 想new就new,哈哈。肯定是你需要用的时候才new啊。删除的话,最好对读和写都加上引用计数。等引用计数都为0的时候delete。
2 一次Sock IO操作就对应一个新的IO数据
3 不安全,需要加锁CRITICAL_SECTION Lock;
chjshen 2009-07-20
  • 打赏
  • 举报
回复
自己顶一下先

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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