g_timeout_add безопасен для потоков (Linux, GTK3, X11)? - PullRequest
1 голос
/ 25 октября 2019

Контекст: в Linux / Debian / Sid x86-64 для моего программного обеспечения bismon (GPLv3 +) (описано здесь )(GTK 3.24, Glib 2.62, сервер Xorg, функция register_gui_postponed_BM, file gui_GTKBM.c)

Вопрос:

Можно ли безопасно вызвать g_timeout_addиз какого-либо другого потока, кроме основного потока? Я могу легко гарантировать, что вызов будет сериализован (используя мьютекс pthread), но я не могу гарантировать, что он будет вызван из основного потока. Потоки - это Pthreads, а не Glib.

Я обнаружил, что this и это , и они заставляют меня думать, что это действительно безопасно ... Но я мог бынеправильно поняли.

1 Ответ

2 голосов
/ 25 октября 2019

Да. Он сводится к вызову до g_source_attach(), который блокирует GMainContext, к которому он добавляет источник времени ожидания.

...