5 个解决方案
#1
我做过, 还写过一套函数库. 用的是重叠I/O+完成例程(completion routine)+APC调用. 做过这么一套东西后感觉编程难度上比完成端口稍微简单点(完成端口控制工作线程间同步太麻烦了, 某个socket两次收到数据可能是从两个线程触发的, 解决不同socket之间的共享冲突太复杂了, 一不小心就死锁, 而且很难调试), 不过代码量比完成端口多, 因为要自己写线程池中线程的调度, 因为可以指定某个socket使用某个线程, 所以多线程冲突方面比较容易避免.
#2
可否提供参考学习?
L27182818@Tom.com
L27182818@Tom.com
#3
用Indy10都做好了。
#4
#5
我想用WinSock API 来做
#1
我做过, 还写过一套函数库. 用的是重叠I/O+完成例程(completion routine)+APC调用. 做过这么一套东西后感觉编程难度上比完成端口稍微简单点(完成端口控制工作线程间同步太麻烦了, 某个socket两次收到数据可能是从两个线程触发的, 解决不同socket之间的共享冲突太复杂了, 一不小心就死锁, 而且很难调试), 不过代码量比完成端口多, 因为要自己写线程池中线程的调度, 因为可以指定某个socket使用某个线程, 所以多线程冲突方面比较容易避免.
#2
可否提供参考学习?
L27182818@Tom.com
L27182818@Tom.com
#3
用Indy10都做好了。
#4
#5
我想用WinSock API 来做