void forloop2()
{
int i = 0;
while(TRUE)
{
printf("forloop2\n");
}
}
int main() {
GtkWidget *window;
g_thread_init(NULL);
gdk_threads_init();
g_thread_create((GThreadFunc)forloop2, NULL, FALSE, NULL);
gtk_init(NULL, NULL);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show_all (window);
gtk_main();
}
似乎創建的線程影響gtk_window_new
(我PROGRAME掛在這裏),爲什麼gtk窗口掛起?
我怎麼做是正確的?
UPDATE
固定由gdk_threads_enter/leave
它工作正常的我。我添加了gtk_container_add(GTK_CONTAINER(window),gtk_entry_new());'在那裏測試窗口的工作原理,它的確如此。 – doublep 2010-05-09 12:57:53
你的意思是沒有'gdk_threads_enter/leave',真的嗎? – httpinterpret 2010-05-09 14:45:51
這是多線程錯誤的關鍵;他們可以在一個系統上完美地工作,並且在下一個系統上可怕地崩潰。 – ptomato 2010-05-09 21:28:31