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 창이 멈추는 이유는 무엇입니까?
는 어떻게 제대로 하는가,gtk_window_new
(내 프로그램 자체가 여기에 달려)에 영향을 미치는 것 같다?
는 GDK 워드 프로세서에서 gdk_threads_enter/leave
그것은 나를 위해 잘 작동 http://developer.gnome.org/gdk/stable/gdk-Threads.html#gdk-Threads.description를 참조하십시오. 나는 gtk_container_add (GTK_CONTAINER (window), gtk_entry_new());를 추가하여 윈도우가 제대로 동작하는지 테스트했다. – doublep
'gdk_threads_enter/leave'가 없어도 작동한다는 것을 의미합니까? – httpinterpret
그것이 멀티 스레딩 버그의 핵심입니다. 한 시스템에서 완벽하게 작동하고 다음 시스템에서 무서울 정도로 충돌 할 수 있습니다. – ptomato