thw*_*ang 3 c++ macos boost osx-mavericks
我的程序的一部分需要休眠 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 函数中找到错误,任何帮助或建议都更受欢迎。
App Nap 很可能是造成这种情况的原因。它是在 10.9 中引入的,并且已经以引起此类意外而闻名。
NSProcessInfo新增了三种暂时禁用 App Nap 的方法:beginActivityWithOptions:reason:、endActivity:、performActivityWithOptions:reason:block:。
您还可以通过将布尔值 YES 写入NSAppSleepDisabled应用程序域的用户默认值来禁用它。
| 归档时间: |
|
| 查看次数: |
909 次 |
| 最近记录: |