【发布时间】:2013-05-27 15:45:29
【问题描述】:
我找不到任何关于做一些真正基本的事情的参考:我想在主 UI 循环上有一个名为“forever”的方法。我会很高兴有一种方法可以调用与 UI 刷新率同步的方法,或者通过自定义时间粒度,因为我真的不需要它比每 50-100 毫秒更频繁地发生。 C++ (Carbon) 和 Objective C 的两个答案都很好,尽管我最终会在纯 C++ 应用程序中使用它。如果您还可以建议如何删除此计时器,那就太好了。
请查看 cmets 以获得关于我想使用它的线程场景的进一步说明。
类似
class MySyncedClass {
void start() {
// start calling "execute" member function on main loop every N ms
}
void stop() {
// stop calling "execute"
}
void execute() {
// do something
}
};
【问题讨论】:
-
你为什么要这样做?
-
每次调用 execute() 时,它都会检查另一个线程的状态并触发用户提供的回调,我想确保它在主线程上以使用户代码更容易写和单线程。此外,您可以想象有其他“doSomething”方法将由 UI 用户代码触发,我想确保这些方法和 execute() 安排的内部计算都发生在同一个线程上。有意义吗?
标签: multithreading cocoa grand-central-dispatch macos-carbon runloop