【发布时间】:2023-01-25 13:50:25
【问题描述】:
我有一个应用程序需要使用回调函数,除非 glib g_main_loop 正在运行,否则回调函数不会触发。我对实现这个的“好”程序是什么样子,或者预期的程序流程是什么一无所知。我不觉得我所拥有的似乎是正确的,因为这种方法需要在每个异步函数之后循环,以等待响应。我想一定有某种方法可以在不阻塞的情况下产生 g_main_loop,但我不知道如何实现。
这是我必须实现的使用需要回调的函数的伪代码:
// declared globally so it can be started from main, stopped from callback.
GMainLoop *loop;
void callback_function(void)
{
g_main_loop_quit(loop);
}
int main (void)
{
func_which_requires_callback(callback_function);
loop = g_main_loop_new();
// loop will end when callback ends the loop
return 0;
}
【问题讨论】:
-
在事件驱动编程中,您无需等待。响应应该是触发稍后回调的新事件。