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