在Qt里,线程相关的类有:
QThread 线程
QMutex 互斥锁
QMutex 互斥锁
QSemaphore 信号量
创建线程:
1 | class MyThread : public QThread |
启动线程:
1 | MyTask* m_task = new MyTask(); |
回收线程:
1 | m_task‐>wait(); |
工作线程的概念:
工作线程:就是一个普通的线程,区别于“界面线程”。当一个事件处理可能需要较长时间,就创建一个线程来完成它,以免界面卡死。
接下来,采用一个示例:采用线程方式模拟传送一个文件,并在另外一个界面实时显示任务进度。
步骤:
(1)打开QT设计师,设计传送界面和进度条显示界面
(2) 创建、启动一个工作线程
(3) 显示一个进度条或等待对话框
(4) 启动一个定时器,定时查询工作线程的进度和状态, 在其完成之后,填满进度条、结束等待。
主程序:
1 | #include "test.h" |
SendDlg.h文件:
1 | #ifndef SENDDLG_H |
SendDlg.c文件:
1 | #include "SendDlg.h" |
SendTask.h文件:
1 | #ifndef SENDTASK_H |
SendTask.c文件:
1 | #include "SendTask.h" |
test.h文件:
1 | #ifndef TEST_H |
test.c文件:
1 | #include "test.h" |
实现情况: