我有一个需要睡眠的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::cin
或getchar()
伴随着无限(好,直到有输入)睡眠。睡觉是否会产生这个过程?