use Sleep in Windows instead of sleep_for

fixes #609
This commit is contained in:
Joao Moreno 2018-01-11 14:48:28 +01:00
parent 32177aa77a
commit a938045135
4 changed files with 14 additions and 5 deletions

View File

@ -358,7 +358,6 @@ inline void spdlog::details::async_log_helper::set_formatter(formatter_ptr msg_f
// spin, yield or sleep. use the time passed since last message as a hint
inline void spdlog::details::async_log_helper::sleep_or_yield(const spdlog::log_clock::time_point& now, const spdlog::log_clock::time_point& last_op_time)
{
using namespace std::this_thread;
using std::chrono::milliseconds;
using std::chrono::microseconds;
@ -374,10 +373,10 @@ inline void spdlog::details::async_log_helper::sleep_or_yield(const spdlog::log_
// sleep for 20 ms upto 200 ms
if (time_since_op <= milliseconds(200))
return sleep_for(milliseconds(20));
return spdlog::details::os::sleep_for_millis(20);
// sleep for 500 ms
return sleep_for(milliseconds(500));
return spdlog::details::os::sleep_for_millis(500);
}
// wait for the queue to be empty

View File

@ -55,7 +55,7 @@ public:
if (!os::fopen_s(&_fd, fname, mode))
return;
std::this_thread::sleep_for(std::chrono::milliseconds(open_interval));
spdlog::details::os::sleep_for_millis(open_interval);
}
throw spdlog_ex("Failed opening file " + os::filename_to_str(_filename) + " for writing", errno);

View File

@ -362,6 +362,15 @@ inline size_t thread_id()
}
// from https://github.com/gabime/spdlog/issues/609
inline void sleep_for_millis(int milliseconds)
{
#if defined(_WIN32)
Sleep(milliseconds);
#else
std::this_thread::sleep_for(std::chrono::milliseconds(milliseconds));
#endif
}
// wchar support for windows file names (SPDLOG_WCHAR_FILENAMES must be defined)
#if defined(_WIN32) && defined(SPDLOG_WCHAR_FILENAMES)

View File

@ -8,6 +8,7 @@
#if defined(__ANDROID__)
#include "sink.h"
#include "../details/os.h"
#include <mutex>
#include <string>
@ -43,7 +44,7 @@ public:
int retry_count = 0;
while ((ret == -11/*EAGAIN*/) && (retry_count < SPDLOG_ANDROID_RETRIES))
{
std::this_thread::sleep_for(std::chrono::milliseconds(5));
spdlog::details::os::sleep_for_millis(5);
ret = __android_log_write(priority, _tag.c_str(), msg_output);
retry_count++;
}