c++ - 带回调的 ObjC/C/C++ 高分辨率计时器

标签 c++ objective-c c timer callback

我确定之前有人问过这个问题,所以我当然使用搜索功能来检查是否有解决我问题的答案。

然而,我所能找到的只是关于高精度测量时间的大量答案。

我需要的是一个高分辨率(至少毫秒)的计时器,它允许我在定义的时间段过去时触发回调。 我想在 Cocoa Mac OS X 应用程序中使用它,因此 C/C++ 或 Obj-C 是可能的。 如果需要额外的库,那么这也很好。

我找到了这个 http://www.songho.ca/misc/timer/timer.html但它使用的是繁忙的等待策略,我认为会消耗太多性能。

非常感谢您的帮助!

最佳答案

您可以直接使用 Apple 的 GCD。在 Mac OS X 上,GCD 从 v10.7 开始可用。

double delayInMilliseconds = 100.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInMilliseconds * NSEC_PER_MSEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    // callback invocation
});

关于c++ - 带回调的 ObjC/C/C++ 高分辨率计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15040351/

相关文章:

ios - 在大型 NSDictionary 中查找最小值和对应的键

c++ - 在命令行上使用 Visual Studio 进行编译时如何包含库?

c++ - 自定义排序 C++ 列表

c++ - 如何将整数输入为空的vector <int>?

c++ - 在运行时修改功能区控件

c++ - 在运行时使用用户定义的文字

iphone - 如果我释放,我将无法访问,如果我保留,我将泄漏

ios - 自定义键盘的自动更正和建议

c - C 编程中的变量作用域

c++ - 扭曲多边形(如 Photoshop 的扭曲)(透视变换)