Общая переменная Qt делает поток безопасным

Мне нужно получить доступ к статической переменной из другого потока. Ниже приведен код.

settings.h

class settings
{

public:
settings();
static QList<int> settings::list;
}

settings.cpp

#include "settings.h"QList<int> settings::list;

settings::settings()
{
}

Теперь из другой ветки я получаю доступ к этому list для чтения и письма.

подобно

thread1.cpp

  settings sett;
QList<int> l = sett.list;  //read

thread2.cpp

  settings sett;
sett.list.append(n);  //write

Так ли это нормально, если я буду использовать этот код без использования QMutex или же QReadWriteLock.

Или это вызывает проблемы с доступом к памяти и сбой. Фактически, в приведенном выше коде, который я написал для демонстрации ситуации, я реализовал статическую переменную общего доступа в моем реальном приложении, которое имеет более 25 потоков, и каждый поток обращается к этой статической переменной для чтения и записи.

И я заметил, что когда приложение запускается в течение 2-3 часов, иногда происходит сбой и появляется окно сообщения с содержимым «Получено SIGABRT: прервано», и когда я отлаживаю, я вижу, что все время происходит сбой на месте где я получаю доступ к этой общей статической переменной.

Так нужно ли здесь использовать мьютекс?

Также я видел QGlobalStatic, подойдет ли это в моем случае?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]