请教,IOCP线程安全,临界区问题(100分)

  • 主题发起人 主题发起人 bsense
  • 开始时间 开始时间
B

bsense

Unregistered / Unconfirmed
GUEST, unregistred user!
网上找了一个叫做FishIOCP的控件,参考CodeProject上的代码写的,迄今为止写得比较好
的IOCP Delphi控件,里面将数据收到 做成了一个事件,问:在该事件里面处理某数据,是否会存在 线程安全问题,是否有临界区问题呢?

需要 该控件的,可以在
http://bashen.ys168.com
下载
 
你的那个网址下载不了东西.
1.那要看控件的线程是怎么处理的, 是否是像INDY那样用一个线程队例把线程都放进去, 用的时候取出一个线程.
2.线程安全:
所有的VCL都不是线程安全的除了Canvas
 
看了下你的代码,发现你每次 WSASend 和 WSARecv 都申请一块内存, 然后完成后又释放该内存,感觉这里可以进一步优化一下,应该是每个连接一块内存一直用到他断开连接。。。


问:在该事件里面处理某数据,是否会存在 线程安全问题,是否有临界区问题呢

至于同步的问题,只要不在VCL上面进行数据显示,应该不存在线程安全问题。。。
如果要在界面上显示数据,可以使用消息SendMessage

一点点个人意见,本人也刚学IOCP,不对之处见谅。。。
 
下载 学习一下
 
也是别人的控件,我也觉得可以加入使用内存池功能。但能力有限,只改进了线程申请的一点点功能。目前这个控件可以到 http://cndn.uu1001.com Delphi板块下载。给分了。
 
后退
顶部