Estoy trabajando con libfuse y con la interfaz de eventos glib y me he encontrado con un problema en el que necesito ejecutar varios bucles principales al mismo tiempo (glib's g_main_loop_run
y fuse_loop_mt
).Posible ejecutar múltiples bucles principales?
ya he intentado creado un hilo independiente para bucle de eventos de mucha labia bajo un contexto secundario, por ejemplo .:
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);
Sin embargo, el bucle de eventos simplista no recoge en cualquiera de los eventos activados. ¿Estoy totalmente fuera de base aquí? ¿Cuál es la forma correcta de abordar múltiples bucles principales?
La mejor manera, supongo que sería evitar múltiples bucles principales si es posible. Integre alternativamente los bucles de eventos para que pueda usar solo uno para recibir y procesar eventos. –
Desafortunadamente, eso no es posible. Necesito la interfaz glib (libevent, etc.) para utilizar la interfaz híper curl. Fusible, por razones obvias también necesita un ciclo principal. –