Безопасно ли одновременно из нескольких потоков вызывать функцию-сигнал Q_OBJECT-объекта?
У меня есть несколько потоков, которые параллельно считают части внешнего вида объекта X. Когда каждая часть готова, поток дёргает метод X::finish()
объекта-виджета. Так как рисовать что-то в Qt можно только из основного потока Qt (из X::paintEvent()), то основно поток надо как-то пнуть. Метод X::finish()
вызывает метод-сигнал X::signalDraw()
того же объета, который уже соединён со слотом, который вызывает X::update
или другим способом провоцирует вызов X::paintEvent()
, в котором уже отрисовываются обновления.
Программа работает в несколько потоков как часы, но valgrind --tool=drd
ругается race condition в районе (он точно не показывает) гуляния внутри Qt-шных служебных вызовов - всякие там qt_static_metacall, QMetaObject::activate.
Чё он ругается - не пойму пока. Вот сформулировался вопрос из первого абзаца.