LINUX.ORG.RU

История изменений

Исправление I-Love-Microsoft, (текущая версия) :

QThread my_thread;
my_class backend; // my_class - от QObject
...
backend.moveToThread(&my_thread);
my_thread.start();
...

И дальше соединяешь frontend при помощи сигнал-слотов с backend и получаешь потокобезопасное взаимодействие без усилий, если используешь Qt-шные классы и контейнеры.

Что я понимаю под «без усилий» - отсутствие мьютексов и типичных рисков, потому что в этом сценарии Qt берет всё на себя. Поправьте если ошибаюсь.

Советую обратить внимание на то что я предложил. Я очень много лет парился с потоками в Qt, пока не осознал этот простой путь, который заложили разработчики Qt, но наверное недостаточно хорошо пояснили...

P.S. Почитал, выше советуют ровно то же что и я.

Исходная версия I-Love-Microsoft, :

QThread my_thread;
my_class backend; // my_class - от QObject
...
backend.moveToThread(&my_thread);
my_thread.start();
...

И дальше соединяешь frontend при помощи сигнал-слотов с backend и получаешь потокобезопасное взаимодействие без усилий, если используешь Qt-шные классы и контейнеры.

Что я понимаю под «без усилий» - отсутствие мьютексов и типичных рисков, потому что в этом сценарии Qt берет всё на себя. Поправьте если ошибаюсь.

Советую обратить внимание на то что я предложил. Я очень много лет парился с потоками в Qt, пока не осознал этот простой путь, который заложили разработчики Qt, но наверное недостаточно хорошо пояснили...