libfuseとglibイベントインターフェイスの両方を使用していますが、複数のメインループ(glibg_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イベントループは、発生したイベントを検出しません。私はここで完全にオフベースですか?複数のメインループに取り組む適切な方法は何ですか?