微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 与Windows的SetTimer相对应的Cocoa

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(特别是因为文档是……不完整的),但这非常值得学习.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐