#include "widget.h"#include "TAsync/TTaskQueue.h"#include <QtConcurrent>#include <QThreadPool>#include <QThread>#include <QDebug>#include <functional>#include <iostream>void back_ground_task_test(){TTask task = std::bind([](){qDebug() << "background task" << 1 + 1;});TTaskQueue::get().queueBackgroundTask(task);}void single_timer_test(){TTask time = std::bind([](){qDebug() << "single timeout" << QTime::currentTime();});qDebug() << "run:" << QTime::currentTime();TTaskQueue::get().queueTimerTask(time,1000,false);}void repeat_timer_test(){TTask time = std::bind([](){qDebug() << "repeate timeout" << QTime::currentTime();});qDebug() << "run:" << QTime::currentTime();auto timer = TTaskQueue::get().queueTimerTask(time,1000,true);}Widget::Widget(QWidget *parent): QWidget(parent){TTaskQueue::get();/* GUI更新测试:非UI线程,同步调用GUI更新任务,普通成员函数 */QtConcurrent::run(QThreadPool::globalInstance(),[this](){QThread::sleep(3);TTask task = std::bind((void (Widget::*)(int, int))&Widget::resize,this,100,10);TTaskQueue::get().queueGuiTask(task,true);});/* GUI更新测试:非UI线程,异步调用GUI更新任务,普通成员函数 */QtConcurrent::run(QThreadPool::globalInstance(),[this](){QThread::sleep(5);TTask task = std::bind((void (Widget::*)(int, int))&Widget::resize,this,200,200);TTaskQueue::get().queueGuiTask(task,true);});/*GUI线程调用:GUI线程禁止同步调用*/TTask asynctask = std::bind((void (Widget::*)(int, int))&Widget::resize,this,10,100);qDebug() << TTaskQueue::get().queueGuiTask(asynctask,false);single_timer_test();repeat_timer_test();back_ground_task_test();/* GUI更新测试:绑定重载函数 */TTask task = std::bind((void (Widget::*)(int, int))&Widget::resize,this,100,100);TTaskQueue::get().queueGuiTask(task,false);}Widget::~Widget(){}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。