首页
社区
课程
招聘
[求助]请教一个单线程Socket编程问题
发表于: 2011-6-25 14:25 3848

[求助]请教一个单线程Socket编程问题

2011-6-25 14:25
3848
使用WSAAsyncSelect模型

一个进程连接多个服务器,即:

RecvDate(DWORD index, ...)
{
    ...
    //根据index,判断收到的是哪个连接的数据,并进行相应处理。
    ...
}

///////////////////////////////////////////////////////

case WM_SOCKET_1:
    case FD_READ:
      RecvDate(1,...);
    break;
...

case WM_SOCKET_2:
    case FD_READ:
      RecvDate(2,...);
    break;
...

case WM_SOCKET_3:
    case FD_READ:
      RecvDate(3...);
    break;
....

case WM_SOCKET_N:
    case FD_READ:
      RecvDate(N,...);
    break;
....

///////////////////////////////////////////////////////
问题:

在单线程的情况下,RecvDate(2, ...),正处理没还结束时,
WM_SOCKET_3,又有数据到来,会不会发生冲突?
它是不是要一直等待RecvDate(2, ...)执行返回后,再调用RecvDate(3, ...)?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 306
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不会冲突,socket3的数据来了 系统会接收,你再调用recv的时候会复制到你提供的换冲区,不过这个情况最好还多线程的好
2011-6-25 15:24
0
雪    币: 143
活跃值: (61)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
因为异步sock 除了写代码麻烦以外,没有任何好处。
所以,不再要使用异步sock了,使用多线程同步sock 代替。
2011-6-26 07:27
0
游客
登录 | 注册 方可回帖
返回
//