qt多线程update()崩溃
(2018-11-08 19:55:19)
项目背景:
多个线程调用一个函数,将需要绘制的点设置到该界面中;
该函数用QMutex进行了保护,最后的时候调用update()进行页面的刷新;
paintEvent不会立即刷新,可能会等待一会儿;
paintEvent会读取上面的Data进行绘制;并且,该函数也用了QMutex进行保护;
程序运行一段时间之后;update()函数崩掉;
当时的猜想:
QMutex是不是出现了问题;因为,update和paintEvent本来就是异步的;但,检查数据时发现数据一切正常;
于是:和QMutex无关;
继续猜想:
多个线程一直在调update(),但是,paintEvent并没有立即执行,可能是生产者与消费者的问题;
于是,增加了一个标志变量;
update()之后,必须paintEvent执行了,才能调用下一次的update();
bingo;崩溃解决!