当使用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;
}
答案 0 :(得分:0)
SharedData::SecureAccess_get_leftCameraFrame(left_data);
对我来说似乎是一个非常繁重的操作(可能需要从相机中读取相当大的图像,然后将其复制到对象中)。然后在刚刚读入数据后,left_data
超出范围并删除图像。然后又一次又一次。尝试在此while循环中包含一个小睡眠,以便它不会占用所有系统资源。
最终目标:你想要实现什么目标?