c ++ linux Eventloop vs. sleep()vs select()

时间:2013-05-09 19:13:05

标签: c++ linux windows sleep

我有一个需要睡眠的SO / DLL程序 - >检查一些东西 - >睡觉。

执行此操作的更好方法是:

// A sleep loop
while ( true )
{ 
   sleep( 1 );   // whatever time
   if ( flag_quit ) leave;
   if ( flag_something_else ) do_whatever();
}

// a select loop    
while ( true )
{ 
   timeout.sec = 1.0;       // whatever time
   timeout.msec = 0;
   zeroIfTimedOut = select( fdMax, fdlist, NULL, NULL, timeout  );   
   if ( flag_quit )              break;     // leave while loop
   if ( flag_something_else )    do_whatever();
   if ( 0 == zeroIfTimedOut )    continue;
   // 
}

// well, however you write an event loop in c++

真正的问题是,

  • 哪个选项对处理器密集程度较低?

  • 是否可以替换Windows和Linux的yield() 睡觉?

  • 如果我决定在应用程序中使用它,那就是 是,不是在DLL / SO中,是否有更好的方法来处理stdin而不是 select()方法?

  • 方法中的中断睡眠会更好吗?

  • std::cingetchar()伴随着无限(好,直到有输入)睡眠。睡觉是否会产生这个过程?

0 个答案:

没有答案