OS X中的SetTimer在Windows中是否有任何等效功能?我正在使用C.
所以我正在为一些软件编写一个插件,我需要定期调用一个函数.在Windows上,我只是将函数的地址传递给SetTimer(),它将以给定的间隔调用.
在OS X上有一个简单的方法吗?
它应该尽可能简约.我并没有在网上找到任何不花哨的东西,有一个关于一个巨大的框架和另一个使用第二个线程的解决方案,其他时间正在睡觉,但我认为应该有一个更简单的方法.
解决方法:
考虑使用Boost Asio library.类deadline_timer适用于所有平台.只需使用bind将功能附加到async_wait并拨打expires_from_now.
io_service io;
deadline_timer timer(io);
void handler()
{
static int second_counter = 0;
cout << second_counter++ << endl;
timer.expires_from_Now(posix_time::seconds(1));
timer.async_wait(bind(&handler));
}
int main(int argc, char* argv[])
{
handler();
io.run();
}
要花一点时间来了解Asio(特别是因为文档是……不完整的),但这非常值得学习.