Windowsの下でselectの影響1


今日デバッガでは、偶然プログラムのcpu占有率が高く、クアッドコアのcpuが1つのコアで満たされていることがわかりました.
そしてプログラムの中でwhileを検索して、すべて1回見て、どの循環もcpuが高すぎることを招くことができなくて、すべてsleepがあって、しかも少なくとも20ミリ秒です.
しかし、whileサイクルの1つはSleepではなくselectを使用しており、コードは以下の通りです.
    struct timeval tv = {0, 100};
    while (netservice_running)
    {
        CheckData();
        select(0, NULL, NULL, NULL, &tv);
    }

1周あたり100ミリ秒休憩すれば十分なはずですが、他のサイクルでは問題が見つからないため、このサイクルだけが単独の休憩方法を使用しているので、変更することにしました.
    struct timeval tv = {0, 100};
    while (netservice_running)
    {
        CheckData();
        //select(0, NULL, NULL, NULL, &tv);
        Sleep(100);
    }

そしてコンパイル運転、よし!
後でネットで検索してみると、このことを言う人がいますが、深く研究していないので、実際のselect実現と関係があるかもしれません.しかし、linuxでは、この関数を使用してタイミングを決めるのが有効であり、cpuの占有量が高すぎることはないようです.