gpt4 book ai didi

c++ - 将即时任务添加到 `CFRunLoop` 的最简单方法?

转载 作者:行者123 更新时间:2023-11-28 06:29:53 32 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

static void my_task_function(void *context)
{
// ...
}

...

dispatch_async_f(dispatch_get_main_queue(), any_pointer_you_like, my_task_function);

关于c++ - 将即时任务添加到 `CFRunLoop` 的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27808603/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com