首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将即时任务添加到“`CFRunLoop`”中的最简单方法?

将即时任务添加到“`CFRunLoop`”中的最简单方法?
EN

Stack Overflow用户
提问于 2015-01-06 22:47:10
回答 1查看 761关注 0票数 0

从C/C++程序中向CFRunLoop添加立即一次任务的最简单方法是什么,即在运行循环再次阻塞之前必须调用的回调。

根据文档,我们有CFRunLoopPerformBlock(),但问题是它使用了块表示法,这需要Objective编译模式。

是否有类似于C/C++程序可用的CFRunLoopPerformBlock(),或者我被迫使用零延迟计时器?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-07 00:20:07

块语言特性不需要使用Objective。Clang在C和C++中也支持它。因此,您可以继续使用CFRunLoopPerformBlock()

如果您仍然在寻找替代方案,并且希望以主线程的run循环(即主run循环)为目标,则可以使用dispatch_async_f()。虽然在使用GCD时使用基于块的函数是最常见的,但是带有_f后缀的函数使用函数指针。

代码语言:javascript
复制
static void my_task_function(void *context)
{
    // ...
}

...

dispatch_async_f(dispatch_get_main_queue(), any_pointer_you_like, my_task_function);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27808603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档