我有一个需要休眠的 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::cin
orgetchar()
。睡眠会产生过程吗?