Я работаю как с libfuse, так и с интерфейсом событий glib, и я столкнулся с проблемой, когда мне нужно запускать несколько основных циклов одновременно (glib's g_main_loop_run
и fuse_loop_mt
).
Я уже пытался создать отдельный поток для цикла обработки событий glib во вторичном контексте, например: [
static void *
event_loop(void *arg)
{
GMainLoop *event_loop;
GMainContext *context;
context = g_main_context_new();
g_main_context_push_thread_default(context);
event_loop = g_main_loop_new(context, FALSE);
g_main_loop_run(event_loop);
return NULL;
}
...
pthread_t event_thread;
pthread_attr_t thread_attr;
pthread_attr_init(&thread_attr);
pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED);
event_thread = pthread_create(&event_thread, &thread_attr,
event_loop, NULL);
] Однако цикл событий glib не улавливает ни одно из запущенных событий. Я здесь совсем не на базе? Как правильно работать с несколькими основными циклами?