Имеется класс со слотом, выполняющим некоторую работу, по окончанию которой должен испуститься сигнал с результатом:
class Worker : public QObject
{
Q_OBJECT
public:
// ...
bool isWorking();
signals:
void resultReady(int);
public slots:
void doWork() {
{
QMutexLocker locker(&isWorkingLock_);
isWorking_ = true;
}
// ...
emit resulReady(res);
{
QMutexLocker locker(&isWorkingLock_);
isWorking_ = false;
}
}
private:
bool isWorking_ {false};
QMutex isWorkingLock_;
};
worker_ типа Worker прикреплен к потоку и запускает работу doWork() по таймеру:
workerThread_.setPriority(QThread::LowestPriority);
worker_->moveToThread(&workerThread_);
connect(workerTimer_, &QTimer::timeout, worker_, &Worker::doWork);
Как правильно снизить время dT до нуля:
1. сигнал timeout испускать при условии, что worker_.isWorking() вернул false?
вот так пробовал
connect(workerTimer_, &QTimer::timeout, worker_,
[&]()
{
if (!worker_->isWorking()) {
qDebug() << "emit";
emit worker_->makeFrames();
}
else
{
qDebug() << "not emit";
}
}
);
2. очистить events queue? Как правильно?
3. что-то еще? Может я неправильно понимаю ситуацию ...