Влияет ли передача QVector с сигнала на слот в разных потоках копированием данных?

Я читаю Вот что класс QVector использует неявный обмен данными, чтобы максимально использовать ресурсы и минимизировать копирование. Я не знаю, вызывает ли копирование данных сигнал с параметром QVector в слот в другом потоке! Эти вопросы также относятся к этой проблеме:

Передача QVector из рабочего потока в основной поток через сигнал / слот

Излучение эталона QVector в сигнале Qt приводит к копированию

Но я не мог понять суть из них. ясно мой вопрос:

У меня есть сигнал:

void someSignal(QVector<int> values);

И слот:

void someSlot(QVector<int> values);

Это в разных темах и я их подключаю. поэтому тип соединения — Qt :: QueuedConnection. Также я должен заявить, что элементы QVector не изменяются в слоте. Они только что прочитаны.

Из-за испускаемого сигнала копируются элементы QVector?

2

Решение

Из-за испускаемого сигнала копируются элементы QVector?

неявная совместная документация Также про это ясно

Неявное разделение происходит за кулисами; программисту не нужно беспокоиться об этом. Даже в многопоточных приложениях происходит неявное совместное использование, так как объясняется в потоках и неявно общих классах.

Просто выделите первый абзац из этой части документации:

Qt использует оптимизацию, называемую неявным разделением, для многих его классов значений, особенно QImage и QString. Начиная с Qt 4, неявные общие классы можно безопасно копировать в потоки, как и любые другие классы значений. Они полностью возвращаются. Неявное разделение действительно неявно.

2

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

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

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