Можно ли как-либо указать Qt, что для конкретного объекта временно не нужно вызывать слот (типо пауза)?
=========================================================================================================

 Приветствую!  

Допустим, есть два отдельных потока. Поток A генерирует сигнал с некоторыми параметрами, на который подписан поток B, тип Qt::QueuedConnection.  

Допустим, по какой-то причине, поток B начинает слишком долго обрабатывать и тогда в очереди (внутри Qt) скапливаются необработанные сигналы.   

  

Вопрос: как дать понять Qt, что слоты конкретного объекта сейчас вызывать не стоит и проигнорить? Типа blockSignal, но только слоты. Да, можно каждый раз connect/disconnect делать, но это попахивает скорее костылём. 

 Стоит помнить что очередь накапливается в каждом потоке отдельно, отправитель их туда кладет.  

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

Следственно блокировать вы можете только новые сигналы.  

И вопрос, зачем их блокировать в один поток, если долетит к другому?  

В случае если задача в оптимизации памяти, то можно отправлять шаред пойнтер с константным классом в оба слота.  

  

Как вариант, подключать сигналы через Qt::DirectConnection вместо Qt::QueuedConnection  

А в слоте вызывать другой, локальный сигнал, который подключен с Qt::QueuedConnection сам в свой класс.  

Использовать например `std::atomic<qint64>` в мемберах отправителя, и перед запуском потоков передать им константный указатель на него. При каждой новой отправке отправитель добавляет 1 к этому числу (надо не забыть обнулять его при достижении какого-то предела, 1 млрд например). А на стороне слотов в обработке Qt::QueuedConnection слота сохранять его значение в копию числа в мемберах потока, так же атомную. Таким образом в слоте Qt::DirectConnection можно будет узнать о количестве очереди конкретного потока и при нужных вам условиях проигнорировать его пересылку дальше.