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
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
Voulez-vous dire que cela fonctionne sans 'gdk_threads_enter/leave', vraiment? – httpinterpret
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