1 我想写一个异步数据接收的TCP服务器端程序,之前的做法是这样的:WSAAsyncSelect设置了关注的socket事件,在每次收到FD_READ消息时,创建一个线程去接收数据,并进行处理。这样的话,并发过来的所有TCP连接中的数据,都可以同时处理。但是后来有高手这种方式不是很好,这种方式把很多CPU时间浪费在了线程的创建和线程上下文的切换上。而真正好的异步数据接收要用到I/O重叠和完成端口技术,是这样么?
2 请大家说说如何异步数据接收是最好的?
2 请大家说说如何异步数据接收是最好的?
解决方案 »
- 有什么方法可以知道DLL中函数接口的参数和返回值?
- 头疼啊char
- 大型分布式应用,怎样管理日志
- DLL内可以静态调用另一个DLL吗?
- 如何得到当前在VC中Debug的程序中的所有线程.
- 急急急! ???我这个程序中怎么老是 this: (value=)0x00000000 (debug)
- 在asp中,set obj=Server.CreateObject("组件名")和set obj=CreateObject("组件名")什么区别
- 怎么样用编程的方法在开始菜单里加一个快捷方式呢??
- 缘龙缘马缘天下,只缘指点迷经人
- 如何动态创建弹出菜单
- 非模态对话框GetDesktopWindow与对话框任务栏隐藏之间的矛盾
- 求书。
2.这应该根据具体需求吧,你的需求是什么样的?iocp可以满足大多数需求
I/O重叠和完成端口就是专门为异步数据传输而设计的,你去看看《Windows网络编程(第二版)》,里面有详细的介绍。
windows上真正要处理大并发处理,你还是去使用iocp吧,线程池,都是有现成封装的
WSAAsyncSelect适合环境是客户端基于窗体消息的IO模型