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
(我的程序在这里挂起),
我该怎么做呢?
更新
由gdk_threads_enter/leave
答案 0 :(得分:1)
来自GDK文档:
您还必须使用gdk_threads_enter()/ gdk_threads_leave()对包围对GTK +的任何调用,而不是在信号处理程序中。
请参阅http://developer.gnome.org/gdk/stable/gdk-Threads.html#gdk-Threads.description