помощью Qt в многопотоке, но столкнулся с такой проблемой: у меня есть несколько рабочих потоков, которые независимо рисуют в разные участки массива пикселей. Всё хорошо до момента пока не произойдет ресайз окна: этот массив реаллоцируется, и соответственно в рабочих потоках происходит сегфолт. Как этого можно избежать?
1. Дебажиться. 2. @qt_chat
вопрос больше не по Qt а по организации потоков, чтобы можно было спокойно поменять массив так, чтоб в рабочих потоках всё работало нормально
вопрос именно по Qt, ибо там своя возня с тредами
я работаю с std::thread
Посылай потокам сообщения при ресайзе, чтоб они ничо не делали, а как закончится ресайз перезагрузили свои алгоритмы на новый буффер с новым размером
да, рисую через QImage, получаю тупо массив чаров через метод QImage::bits
Не совсем понимаю как посылать сообщения. И как я могу из основного потока узнать, что рабочие потоки точно остановились и не пишут ничего по старому указателю?
Систему сообщений надо самому делать
В самом простом варианте потоки просто раз в N итераций проверяют атомик, при ресайзе он взводится, после чего потоки ждут эвент, что можно продолжить, а основной поток ресайзит массив
Отлично Я долго шёл вокруг да около, а ты по полочкам расписал. Спасибо!
Обсуждают сегодня