Qt - 慢GUI - 线程

时间:2014-04-01 08:22:37

标签: performance qt user-interface pthreads qthread

当使用pthread(或带有moveThread函数的QThread)读取数据(使用互斥锁)时,GUI速度变慢。

为什么?

GUI线程和pthread worker(或Qthread)是两个不同的线程吗?

准确地说,GUI不会读取/写入任何数据,因此它们是两个不相关的过程。

为什么会这个问题?

(以上是pthred worker的例子,而GUI对话框是用qt Creator创建的,并且在主线程中存在)

void* task_camera_notifier(void*)
{
    while(AppState::is_left_camera_in_grabbing && AppState::is_right_camera_in_grabbing)
    {
        camera_data left_data;
        SharedData::SecureAccess_get_leftCameraFrame(left_data);
    }

    return NULL;
}

1 个答案:

答案 0 :(得分:0)

SharedData::SecureAccess_get_leftCameraFrame(left_data);对我来说似乎是一个非常繁重的操作(可能需要从相机中读取相当大的图像,然后将其复制到对象中)。然后在刚刚读入数据后,left_data超出范围并删除图像。然后又一次又一次。尝试在此while循环中包含一个小睡眠,以便它不会占用所有系统资源。

最终目标:你想要实现什么目标?