2010-05-09 6 views
1
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(); 
} 

Il semble que le thread créé affecte gtk_window_new (mon programe est ici suspendu),Pourquoi les fenêtres gtk se bloque-t-elle?

comment puis-je le faire correctement?

MISE À JOUR

fixé par gdk_threads_enter/leave

+0

Il fonctionne très bien pour moi. J'ai ajouté 'gtk_container_add (GTK_CONTAINER (window), gtk_entry_new());' ici pour tester cette fenêtre fonctionne, et c'est le cas. – doublep

+0

Voulez-vous dire que cela fonctionne sans 'gdk_threads_enter/leave', vraiment? – httpinterpret

+0

C'est le point avec les bogues de multithreading; ils peuvent parfaitement fonctionner sur un système et s'effondrer horriblement sur le suivant. – ptomato

Répondre

Questions connexes