- 论坛徽章:
- 0
|
一个C编译的程序,以前在HPUX上运行的时候,是正常的,用了下面的代码。
后来迁移到Linux服务器上,把这段代码(循环里面的)注释掉了,运行后却占用CPU达80%以上,甚至90%,但是如果有别的程序,比如strace运行的时候,CPU会降下来到20%左右。
各位大虾,能否给些建议。我初学C编程,不知道怎么入手解决。
int main(int argc, char *argv[])
{
int r;
fd_set rdmask;
struct timeval timeout;
int sp;
timeout.tv_sec = 0;
while (TRUE)
{
FD_ZERO(&rdmask);
FD_SET(sp,&rdmask);
timeout.tv_usec = 5;
r = select(sp + 1, (fd_set *)&rdmask, (fd_set *)0, (fd_set *)0, &timeout);
if (r < 0 && errno != EINTR) error_out ("Cannot perform select", errno);
if ( r > 0 && FD_ISSET(sp,&rdmask))
handle_ovspmd_msg();
......
} |
|