Windowsの下でselectの影響1
今日デバッガでは、偶然プログラムのcpu占有率が高く、クアッドコアのcpuが1つのコアで満たされていることがわかりました.
そしてプログラムの中でwhileを検索して、すべて1回見て、どの循環もcpuが高すぎることを招くことができなくて、すべてsleepがあって、しかも少なくとも20ミリ秒です.
しかし、whileサイクルの1つはSleepではなくselectを使用しており、コードは以下の通りです.
1周あたり100ミリ秒休憩すれば十分なはずですが、他のサイクルでは問題が見つからないため、このサイクルだけが単独の休憩方法を使用しているので、変更することにしました.
そしてコンパイル運転、よし!
後でネットで検索してみると、このことを言う人がいますが、深く研究していないので、実際のselect実現と関係があるかもしれません.しかし、linuxでは、この関数を使用してタイミングを決めるのが有効であり、cpuの占有量が高すぎることはないようです.
そしてプログラムの中で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の占有量が高すぎることはないようです.