一个Win32 Console Application
程序流程是这样的:
queue<HANDLE> TQueue;//全局队列SOCKET sSocket;//全局变量当sSocket bind端口后,运行一个函数:PkgRecv()
PkgRecv()是这样:
void PkgRecv(){
DWORD TID;
HANDLE T;
struct sockaddr_in c;
int pl, l = sizeof(c);
SOCKET cSocket;
char buf[1024];
if (sSocket!=INVALID_SOCKET){
T = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)PkgRecv, NULL, 0, &TID);
if (T!=0) TQueue.push(T);
cSocket = accept(sSocket, (struct sockaddr *)&c, &l);
if (cSocket!=INVALID_SOCKET){
while(1){
pl = recv(cSocket, buf, sizeof(buf), 1);
if (pl==SOCKET_ERROR||pl==0) break;
printf("Recv->%s\n", buf);
}
}
}
}问题是这样的:
我自己的机器配置:
PIII 1.7G CPU /384MB 内存
当我同时开启100个线程对主程序发出连接请求,并且发送包,测试100万个包,非常正常,没有崩溃现象我的服务器配置:
2个Xeon 2.4G CPU / 1024MB 内存
当我同时开启10个线程对主程序发出连接请求,并且发送包,主程序就崩溃了,有的时候连100个包都没接受到就崩溃了,崩溃前没有任何提示我把accpet的socket连接设置为非阻塞模式也是这样的请问这是怎么回事?配置越高反而处理不了大量数据
程序流程是这样的:
queue<HANDLE> TQueue;//全局队列SOCKET sSocket;//全局变量当sSocket bind端口后,运行一个函数:PkgRecv()
PkgRecv()是这样:
void PkgRecv(){
DWORD TID;
HANDLE T;
struct sockaddr_in c;
int pl, l = sizeof(c);
SOCKET cSocket;
char buf[1024];
if (sSocket!=INVALID_SOCKET){
T = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)PkgRecv, NULL, 0, &TID);
if (T!=0) TQueue.push(T);
cSocket = accept(sSocket, (struct sockaddr *)&c, &l);
if (cSocket!=INVALID_SOCKET){
while(1){
pl = recv(cSocket, buf, sizeof(buf), 1);
if (pl==SOCKET_ERROR||pl==0) break;
printf("Recv->%s\n", buf);
}
}
}
}问题是这样的:
我自己的机器配置:
PIII 1.7G CPU /384MB 内存
当我同时开启100个线程对主程序发出连接请求,并且发送包,测试100万个包,非常正常,没有崩溃现象我的服务器配置:
2个Xeon 2.4G CPU / 1024MB 内存
当我同时开启10个线程对主程序发出连接请求,并且发送包,主程序就崩溃了,有的时候连100个包都没接受到就崩溃了,崩溃前没有任何提示我把accpet的socket连接设置为非阻塞模式也是这样的请问这是怎么回事?配置越高反而处理不了大量数据
解决方案 »
- 为什么SDI用Serialize无法正确读取txt文件内容?
- mfc,改变静态文本框的大小
- 怎么禁止ClistCtrl控件的水平滚动条,让它永远不显示呢
- 有关SetROP2()等drawing attribute的问题
- ●●有没有半角转全角,全角转半角的系统函数?●●
- 怎么样在桌面上写一行字?
- 求助:要求自定软件开发课题,我还没有找到,马上就要到时间了,help!
- MFC添加了类的头文件为什么还提示类未定义
- help!!!!!!(43分)
- 上网记费程序如何实现?
- 心情不好,散!!!!!!!
- cannot find the definition (implementation)of the function
http://expert.csdn.net/Expert/topic/2864/2864737.xml?temp=8.298892E-02
同时我也发现了,不同的硬件环境下,处理共享内存的方式也不同