我的服务程序在一个客户端接入以后就开一个接收线程,负责接收它的数据。
在此期间客户机保持和服务器的连接。
实际运行时,发现这个接收线程一运行,cpu利用率达到100%,根本接收不了其他的连接,请问大家怎么处理接收线程的?怎么改善接收线程的性能?
// 接收数据线程如下:
dword winapi recvthread(lpvoid lparam)
{
int socket;
socket= (int )lparam;
fd_set fdread;
struct timeval tmvtimeout={0l,100l};
char recvbuf[256];
while (true)
{
// 初始化
fd_zero(&fdread);
fd_set(socket,&fdread);
int ret = select(0,&fdread,null,null,&tmvtimeout);
if (ret == socket_error)
{
printf("select() socket error: %d../n",getlasterror ());
continue;
}
else if (ret > 0)
{
if (fd_isset(socket,&fdread))
{ // 有数据可读
nrecv= recv (socket, recvbuf, sizeof( recvbuf), 0);
if (nrecv == socket_error)
{ // 读数据出错
printf("recv socket error: %d../n",getlasterror());
}
else
if (nrecv == 0)
{ // 客户端断开连接
printf(
socket 接收线程实现(帖子)
最新推荐文章于 2022-07-07 17:15:51 发布