Unverified Commit 6a8b05f1 authored by Dominik Charousset's avatar Dominik Charousset Committed by GitHub

Merge pull request #924

Replace Sleep(0) with yield() call on Windows
parents 206d2012 9c20e8d8
...@@ -152,8 +152,19 @@ public: ...@@ -152,8 +152,19 @@ 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
...@@ -202,4 +213,3 @@ public: ...@@ -202,4 +213,3 @@ public:
} // namespace policy } // namespace policy
} // namespace caf } // namespace caf
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