有没有办法在不使用QTimer
的情况下进行更高性能的异步处理?
基本上我有一个single_step
函数,要么应该在"单步"之后调用。按下按钮,或在"开始"之后循环按下按钮,直到"停止"按下按钮。
QTimer
的 0
工作正常,但性能有点慢。我正在寻找替代品。
答案 0 :(得分:0)
您可以将QMetaObject::invokeMethod()
与Qt::QueuedConnection
一起使用。
我不知道它会不会更快。开销的主要来源仍然是事件系统。你肯定不希望异步性太细粒度。
答案 1 :(得分:0)
single_step
函数的功能太少了。你应该连续多次调用它,例如:
class Worder : public QObject {
QBasicTimer m_timer;
...
void single_step();
void work_chunk() { for (int i = 0; i < 100; ++i) single_step(); }
...
void timerEvent(QTimerEvent* ev) {
if (ev->timerId() == m_timer.timerId())
work_chunk();
}
};