我正在尝试使用线程来管理 GTK+ 中的几件事,但是,一旦我尝试在新线程中使用任何 GUI 函数,它就会锁定 GUI,这是有道理的,因为 GTK+ 不是线程安全的。有没有办法解决?
这是我的代码:
int main(int argc, char *argv[])
{
GError *error = NULL;
/* init threads */
g_thread_init(NULL);
gdk_threads_init();
/* init gtk */
gtk_init(&argc, &argv);
....
//Multithreaded functions
g_thread_create(argument_thread, (gpointer)label7, FALSE, &error );
gdk_threads_enter();
gtk_main();
gdk_threads_leave();
return 0;
}
void *argument_thread(void *args)
{
while(1)
{
gdk_threads_enter();
gtk_entry_set_text(entry2,"random stuff");
gdk_threads_leave();
}
}