我試圖用線程來管理GTK +中的幾件事,但是,只要我嘗試在新線程中使用任何GUI函數,就會鎖定GUI,這是合理的,因爲GTK +不是線程安全。有沒有辦法解決?GTK +線程安全
這裏是我的代碼:
如果int main(int argc, char *argv[])
{
GError *error = NULL;
/* init threads */
g_thread_init(NULL);
gdk_threads_init();
/* init gtk */
gtk_init(&argc, &argv);
....
//Multithreaded functions
g_thread_create(argument_thread, (gpointer)label7, FALSE, &error);
gdk_threads_enter();
gtk_main();
gdk_threads_leave();
return 0;
}
void *argument_thread(void *args)
{
while(1)
{
gdk_threads_enter();
gtk_entry_set_text(entry2,"random stuff");
gdk_threads_leave();
}
}
'gdk_threads_enter'及其相關函數自版本3.6開始已棄用。您應該考慮通過閒置回調切換到主線程的傳播。有關詳細信息,請參見[關於此的文檔](https://developer.gnome.org/gdk3/stable/gdk3-Threads.html#gdk3-Threads.description)。 – user