Windowsでは、Unixでは発生したことのない問題が発生します。これが、スレッドを1ミリ秒未満スリープさせる方法です。Unixでは、通常、ニーズに合わせていくつかの選択肢(sleep、usleep、nanosleep)があります。ただし、Windowsでは、ミリ秒単位の粒度のスリープしかありません。
Unixでは、select
システムコールを使用してマイクロ秒のスリープを作成できます。これは非常に簡単です。
int usleep(long usec)
{
struct timeval tv;
tv.tv_sec = usec/1000000L;
tv.tv_usec = usec%1000000L;
return select(0, 0, 0, 0, &tv);
}
どうすればWindowsで同じことを達成できますか?