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