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