Commit 0ae9064c authored by Dmitry M. Fedin's avatar Dmitry M. Fedin

Replace Sleep(0) with yield() call on Windows

parent 4b9d37c1
...@@ -152,8 +152,18 @@ public: ...@@ -152,8 +152,18 @@ public:
if (job) if (job)
return job; return job;
} }
if (strategies[k].sleep_duration.count() > 0) if (strategies[k].sleep_duration.count() > 0) {
#ifdef CAF_MSVC
// Windows cannot sleep less than 1000 us, so timeout is conveted to 0
// inside sleep_for(), but Sleep(0) is dangerous so replace it with yield()
if (strategies[k].sleep_duration.count() < 1000)
std::this_thread::yield();
else
std::this_thread::sleep_for(strategies[k].sleep_duration);
#else
std::this_thread::sleep_for(strategies[k].sleep_duration); std::this_thread::sleep_for(strategies[k].sleep_duration);
#endif
}
} }
} }
// we assume pretty much nothing is going on so we can relax polling // we assume pretty much nothing is going on so we can relax polling
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment