(glib en g_main_loop_run
ve fuse_loop_mt
).Birden çok ana döngüyü çalıştırmak mümkün mü? Hem libfuse ve geveze olay arayüzü ile çalışıyorum ve ben aynı anda birden fazla ana döngüler çalıştırmak için gereken bir sorun haline çalıştırmak
Zaten ikincil bağlamında glib olay döngü için oluşturulan müstakil bir iş parçacığı teşebbüs ettik ör .: hitabet olay döngü ateş olayların hiçbirinde atlyor Ancak
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);
. Burada tamamen üste mi kaldım? Birden çok ana döngüyü ele almanın doğru yolu nedir?
iyi yolu tamamen mümkünse birden ana döngüler önlemek olacaktır. Alternatif olarak etkinlik döngülerini entegre edin, böylece olayları almak ve işlemek için yalnızca bir tane kullanabilirsiniz. –
Maalesef bu mümkün değil. Curl hiper arayüzünü kullanmak için glib (libevent, vs ..) arayüzüne ihtiyacım var. Sigorta, açık nedenlerden dolayı ana bir döngüye de ihtiyaç duyar. –