当主线程退出时,如何使子线程退出?

时间:2010-05-09 13:14:57

标签: c windows multithreading gtk

void forloop2()
{
    int i = 0;
    while(TRUE)
    {
        printf("forloop2\n");
    }
}

int main() {
    GThread          *Thread1;
    GtkWidget *window;
    g_thread_init(NULL);
    gdk_threads_init();
    gdk_threads_enter ();
    Thread1 = g_thread_create((GThreadFunc)forloop2, NULL, TRUE, NULL);
    gtk_init(NULL, NULL);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_widget_show_all (window);
    gtk_main();
    g_thread_join(Thread1);
    gdk_threads_leave ();
}

当我关闭窗口时,如何让Thread1退出?

1 个答案:

答案 0 :(得分:1)

清除main中的一些条件,即forloop2()中的循环检查每次迭代。如果要退出main,请设置该条件,然后在Thread1上调用g_thread_join()。由于forloop2()检查它何时看到该条件,它将退出,导致它加入,main将继续退出。