在日常线程使用中,通常需要使线程休眠一段时间,让出CPU,且有时需要精确到毫秒的精度。以下为一个通用线程休眠函数实现:
void GeneralSleep(unsigned int millisecond)
{
#ifdef WIN32
::Sleep(millisecond);
#else
struct timeval tv;
memset(&tv, 0, sizeof(struct timeval));
tv.tv_sec = millisecond / 1000;
tv.tv_usec = (millisecond % 1000) * 1000;
select(0, NULL, NULL, NULL, &tv);
#endif
}