据我了解,我这样做:
boost::thread p4(sensors_get_informations);
gtk_main ();
void sensors_get_informations()
{
while(!quit)
{
[...] //Doing some stuff
gdk_threads_add_idle((GSourceFunc)update_label_sensors, &str_end); //Here the interface will be updated
wait(1000);
}
}
static bool update_label_sensors(....)
{
[...]
gtk_label_set_label(GTK_LABEL(label_sensors), label_string);
[...]
return false;
}
我目前有5个线程一起工作,它似乎工作正常,但这是通常的做法,还是有办法改进它?
Here有人提出了另一种方法来更新界面上的内容,但是通过一些研究,似乎从主GTK线程以外的其他线程更新小部件有时会导致分段错误。
答案 0 :(得分:0)
这是通常的方法。不允许从主GTK线程以外的其他线程更新小部件,这将导致程序无法预测地崩溃。