GTK / Glib: как отправить сообщение из потока GUI в рабочий поток? - PullRequest
0 голосов
/ 16 сентября 2011

GTK не является поточно-ориентированным, но поддерживает потоки - его можно использовать из нескольких потоков, обеспечивая глобальную блокировку для защиты вызовов API GTK. Если мне нужно отправить сообщение из рабочего потока в поток графического интерфейса GTK, я просто вызываю gdk_threads_add_idle(), и через некоторое время в потоке графического интерфейса будет вызываться указанный обратный вызов.

Но как проще сделать противоположную вещь - вызвать указанный обратный вызов из потока non-GUI, когда пользователь нажимает кнопку?

1 Ответ

2 голосов
/ 29 сентября 2011

Ничто не мешает вам создать новый цикл без GUI с g_main_loop_new, запустить его из потока без GUI с g_main_loop_run и при необходимости вызвать g_idle_add из потока GUI.

...