Можно запустить несколько основных циклов?

Я работаю как с 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 не улавливает ни одно из запущенных событий. Я здесь совсем не на базе? Как правильно работать с несколькими основными циклами?

7
задан ben lemasurier 16 December 2011 в 03:37
поделиться