Как синхронизировать доступ к данным, доступ к которым осуществляется из нескольких потоков, в настройке модели / представления Qt?
Я использую QTableView
с классом Model
.
Model
расширяет QAbstractTableModel
и имеет экземпляр пользовательского класса Net
, который содержит фактические данные, которые будут отображаться в вызовах от QTableView
до data()
(доступ к которым Model::data()
)
Мой класс прослушивает сетевые данные и работает в отдельном потоке, из которого он обновляет свои данные (простой массив фиксированного размера из 10 строк).
Данные в моем классе должны быть доступны как потоку, который постоянно обновляет их, так и из Qt GUI, вызывая data()
в Model
.
Я бы предположил, что мне нужно использовать мьютекс для синхронизации доступа к моему массиву строк, но QAbstractTableModel::data()
- это метод const
, поэтому я не могу заблокировать boost::mutex
в нем.
Каков общий шаблон для синхронизации доступа к данным в классе, который расширяет QAbstractTableModel
и предоставляет данные для QTableView
?