我的程序的一部分需要休眠 10 毫秒。通常我为此使用 boost lib,但它有时会休眠 10010 毫秒,所以我尝试更换
boost::this_thread::sleep_for(boost::chrono::milliseconds(read_delay_ms));
Run Code Online (Sandbox Code Playgroud)
和
struct timespec a;
a.tv_sec = 0;
a.tv_nsec = read_delay_ms * 1000000;
int rc = nanosleep( &a, NULL );
Run Code Online (Sandbox Code Playgroud)
毫不奇怪,使用 nanosleep 有时也会休眠 10010 毫秒(sleep_for 在 mac 上使用 nanosleep() 实现)。
我的程序很复杂,所以我无法创建一个小例子来说明这个问题,我正在研究这个。以下是一些亮点:
它是使用 boost::python 作为桥接器用 C++ 编写的 python 扩展
将 boost::threads 用于使用 boost::asio 的异步任务
该问题仅在 mac OS X 10.9 上出现。它在 Mac OS X 10.8 及更低版本上看不到,在 linux、win、iOS 和 android 上看不到。
为了在我的代码、boost lib 或 sys 函数中找到错误,任何帮助或建议都更受欢迎。