0

我有一个需要休眠的 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++

真正的问题是,

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

  • 是否有yield()适用于 Windows 和 Linux 的可以替代睡眠?

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

  • 在这种方法中,可中断的睡眠会更好吗?

  • 一个无限的(好吧,直到有输入)睡眠伴随着std::cinor getchar()。睡眠会产生过程吗?

4

0 回答 0