#multithreading #qt #slot
#многопоточность #qt #слот
Вопрос:
Я хочу вызвать метод QObject из другого потока (Qt ::QueuedConnection), если мое приложение многопоточное, и из того же потока (Qt :: DirectConnection), если мое приложение работает в одном потоке.
Я обнаружил, что это может быть достигнуто двумя способами: 1) сигнал / слот 2) QMetaObject:: invokeMethod с использованием Qt :: AutoConnection, но я хотел бы знать, какой из них предпочтительнее и есть ли разница в производительности между ними?
- Сигнал / слот Qt:: автоматическое подключение:
- QMetaObject::invokeMethod Qt::Автоматическое подключение:
Уже существует существующая кодовая база, которая выполняется с помощью сигнала / слота, но ее довольно сложно прочитать. Стоит ли его рефакторинг с помощью QMetaObject::invokeMethod?
аргументы функции также могут быть настраиваемым типом.
Комментарии:
1. Мне любопытно, почему вы находите сигналы / слоты более сложными для чтения, чем QMetaObject::invokeMethod? Я бы никогда не стал беспокоиться о invokeMethod, если это не является абсолютно необходимым.