Как работать с потоками в Qt напрямую вызывая слоты, но что бы они оказались в его очереди?
Есть объект в потоке, который внутри себя использует сигналы-слоты, в общем очередь событий.
Проблема в том, что на каждый вызов метода из другого потока или прописывать объявление сигнала и подключение слота, либо использовать QMetaObject::invokeMethod что сильно раздувает вызов в случае передачи параметров.
Так вот, есть ли какой-либо "подход"/паттерн, что бы при прямом вызове слотов из другого потока они вызывались внутри очереди этого потока?
Прошу пояснить.
Нужно что бы при вызове из другого потока вызов добавлялся в очередь того потока, без ожидания выполнения и тем более блокирования обоих.
Pavel K, в конструкторе класса подключите сигнал этого же класа в слот этого же класса с типом Qt::QueuedConnection. Тогда из другого потока можно по указателю обращаться к этому сигналу потоко-безопасно. В этом случае можно обойтись без qmetaobject::invokeMethod, внешних подключений и не будет блокировки вызывающего класса. Но в случае если надо ожидать ответ это не подходит.