做网站哪个编辑器好用,网络货运公司排名,图书网站建设论文,项目建设目标1. 测试方法
定义一个类Recv#xff0c;其中包含一个成员变量num和一个成员函数add()#xff0c;add()实现num的递增。 另一个类Send通过信号槽或直接调用的方法调用Recv的add函数。 单独开一个线程Watcher#xff0c;每秒计算num变量的增长数值#xff0c;作为add函数被调…1. 测试方法
定义一个类Recv其中包含一个成员变量num和一个成员函数add()add()实现num的递增。 另一个类Send通过信号槽或直接调用的方法调用Recv的add函数。 单独开一个线程Watcher每秒计算num变量的增长数值作为add函数被调用的次数。
class Recv : public QObject {Q_OBJECT
public:unsigned long long num 0;void add() {num;}
};class Send : public QObject {Q_OBJECT
public:Send() default;Send(Recv* r) : r(r) {};void run() {while (true) {emit sig(); // 发送信号绑定add函数为槽函数//r-add(); // 直接调用}}
signals:void sig();
private:Recv* r;
};class Watcher : public QThread {Q_OBJECT
public:Watcher(Recv* r) : r(r) {}void run() {while (true) {qDebug() r-num - t; // 计算num的增长t r-num;QThread::sleep(1);}}
private:Recv* r;unsigned long long t 0;
};2. 信号槽调用
int main(int argc, char* argv[])
{QApplication a(argc, argv);Recv r;//Send s(r);Send s;QObject::connect(s, Send::sig, r, Recv::add);Watcher* w new Watcher(r);w-start();s.run();return a.exec();
}输出 每秒调用约 6 × 1 0 7 6\times 10^7 6×107次
3. 直接调用
输出 每秒调用约 4 × 1 0 9 4\times 10^9 4×109次
4. 结论
信号槽相比函数直接调用慢60倍