如何从另一个线程唤醒GTK线程(无需轮询)

时间:2015-04-03 01:59:40

标签: multithreading event-handling gtk gtkmm

一个线程运行所有GTK(实际上是gtkmm),所以基本上它运行' Gtk :: Application :: run'它调用了一个主循环' glib的功能:

Glib::RefPtr<Gtk::Application> refApp = Gtk::Application::create(argc, argv, "com.alinoe.speech");
refApp->run(*new UIWindow(glade_path, css_path, "window1", jack_client));

另一个线程处理实时音频,没有时间做任何花费CPU时间的事情, 但有时需要告诉我的GTK线程它必须醒来并做点什么。

当然我可以将音频线程设置为原子位并让GTK线程轮询该位,但我讨厌轮询,因为它花费了不必要的CPU和/或在事件和处理之间引入了延迟。是不是有一种官方方式可以触发GTK线程来唤醒&#34;唤醒&#34;并调用一些用户功能?

0 个答案:

没有答案