나는 libfuse와 glib 이벤트 인터페이스를 모두 사용하고 있으며 다중 주 루프를 동시에 실행해야하는 문제가 발생했습니다 (glib의 g_main_loop_run
및 fuse_loop_mt
).여러 주 루프를 실행할 수 있습니까?
이미 보조 컨텍스트에서 입심의 이벤트 루프에 대해 생성 분리 된 스레드를 시도했습니다, 예컨대 : 입심 이벤트 루프가 트리거되는 이벤트 중 하나에서 선택하지 않는 그러나
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 (libevent, etc ..) 인터페이스가 필요합니다. 분명한 이유 때문에 퓨즈는 또한 메인 루프가 필요합니다. –