select timeout or -1

来源:互联网 发布:金蝶软件系统参数 编辑:程序博客网 时间:2024/05/01 21:31

位置1:

 /* Polling for new connections is done every connect_int milliseconds */
COOLAPsig_parms.connect_int = 5000;    /* 5 seconds */

 /* Default process entry interval "select()" system call */
 COOLAPsig_parms.interval.tv_usec = 500000;
@COOLAPsig_parms.interval.tv_sec = 2;

 

while (1) {

位置2:

 /* Polling for new connections is done every connect_int milliseconds */
COOLAPsig_parms.connect_int = 5000;    /* 5 seconds */

 /* Default process entry interval "select()" system call */
 COOLAPsig_parms.interval.tv_usec = 500000;
@COOLAPsig_parms.interval.tv_sec = 2;

 

  /*
   * Use "select" to indicate when messages have been
   * received and for higher resolution timing.
   */
  fdvar = COOLAPsig_parms.socketset;
  retval = select(COOLAPsig_parms.numsockets,
                  &fdvar,
                  (fd_set *)0,
                  (fd_set *)0,
                  &COOLAPsig_parms.interval);

...

}

在位置设置时间,第二次timeout 变成了0

等于while(1){}
线程空转无限循环的cpu占用率是100% 

空转就在拼命运行啊,process始终处于run状态,所以CPU到100%,

加了sleep(),process基本进入sleep状态,就不消耗CPU了
select()进程进入select状态,和sleep是一样的。

 

在位置2:几秒钟足够了,一秒钟可以进行几千万次运算了
相比其他的code,cpu微微妙就执行完了,到socket用几秒

 


2 if select 返回值是-1

说明fd已经关闭。

select仍在check 这个fd

0 0
原创粉丝点击