欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++?QT?QThread啟動(dòng)、停止、暫停和恢復(fù)的實(shí)現(xiàn)

 更新時(shí)間:2023年06月02日 15:25:15   作者:睡不著睡不著睡不著  
本文主要介紹了C++?QT?QThread啟動(dòng)、停止、暫停和恢復(fù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

C++ QT QThread是一個(gè)多線(xiàn)程編程框架,可以讓開(kāi)發(fā)者輕松地創(chuàng)建和管理多個(gè)線(xiàn)程。它提供了一種簡(jiǎn)單的方式來(lái)實(shí)現(xiàn)并發(fā)編程,可以在同一時(shí)間運(yùn)行多個(gè)任務(wù),從而提高應(yīng)用程序的性能和響應(yīng)能力。QThread也提供了一些方便的工具和函數(shù)來(lái)幫助開(kāi)發(fā)者控制線(xiàn)程的行為,例如線(xiàn)程的啟動(dòng)、停止、暫停、恢復(fù)等。QThread是C++ QT框架中的一個(gè)重要組件,被廣泛應(yīng)用于各種類(lèi)型的應(yīng)用程序中。

QThread的啟動(dòng)、停止、暫停和恢復(fù)具體用法如下:

1. 啟動(dòng)線(xiàn)程:調(diào)用QThread的start函數(shù)啟動(dòng)線(xiàn)程,線(xiàn)程會(huì)自動(dòng)調(diào)用run函數(shù)執(zhí)行任務(wù)。

2. 停止線(xiàn)程:調(diào)用QThread的quit函數(shù)停止線(xiàn)程,線(xiàn)程會(huì)在執(zhí)行完當(dāng)前任務(wù)后退出。

3. 暫停線(xiàn)程:在線(xiàn)程任務(wù)中使用一個(gè)標(biāo)志變量控制線(xiàn)程的執(zhí)行,當(dāng)標(biāo)志變量為false時(shí),線(xiàn)程任務(wù)會(huì)進(jìn)入等待狀態(tài),從而實(shí)現(xiàn)線(xiàn)程的暫停。

4. 恢復(fù)線(xiàn)程:修改標(biāo)志變量為true,從而喚醒線(xiàn)程任務(wù),使線(xiàn)程恢復(fù)執(zhí)行。

下面是一個(gè)示例代碼,展示了如何使用QThread啟動(dòng)、停止、暫停和恢復(fù)線(xiàn)程:

? ? #include <QThread>
? ? #include <QDebug>
? ? class MyThread : public QThread
? ? {
? ? public:
? ? ? ? MyThread() {}
? ? ? ? void run() override
? ? ? ? {
? ? ? ? ? ? m_running = true;
? ? ? ? ? ? qDebug() << "Thread started";
? ? ? ? ? ? while (m_running) {
? ? ? ? ? ? ? ? // Do some work here
? ? ? ? ? ? ? ? QThread::msleep(1000);
? ? ? ? ? ? ? ? if (!m_running) {
? ? ? ? ? ? ? ? ? ? qDebug() << "Thread paused";
? ? ? ? ? ? ? ? ? ? m_mutex.lock();
? ? ? ? ? ? ? ? ? ? m_pauseCond.wait(&m_mutex);
? ? ? ? ? ? ? ? ? ? m_mutex.unlock();
? ? ? ? ? ? ? ? ? ? qDebug() << "Thread resumed";
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? qDebug() << "Thread stopped";
? ? ? ? }
? ? ? ? void pause()
? ? ? ? {
? ? ? ? ? ? m_running = false;
? ? ? ? }
? ? ? ? void resume()
? ? ? ? {
? ? ? ? ? ? m_mutex.lock();
? ? ? ? ? ? m_pauseCond.wakeAll();
? ? ? ? ? ? m_mutex.unlock();
? ? ? ? }
? ? private:
? ? ? ? bool m_running = false;
? ? ? ? QMutex m_mutex;
? ? ? ? QWaitCondition m_pauseCond;
? ? };
? ? int main(int argc, char *argv[])
? ? {
? ? ? ? QCoreApplication a(argc, argv);
? ? ? ? MyThread thread;
? ? ? ? thread.start();
? ? ? ? // Pause the thread after 5 seconds
? ? ? ? QTimer::singleShot(5000, [&thread]() {
? ? ? ? ? ? thread.pause();
? ? ? ? });
? ? ? ? // Resume the thread after 10 seconds
? ? ? ? QTimer::singleShot(10000, [&thread]() {
? ? ? ? ? ? thread.resume();
? ? ? ? });
? ? ? ? // Quit the thread after 15 seconds
? ? ? ? QTimer::singleShot(15000, [&thread]() {
? ? ? ? ? ? thread.quit();
? ? ? ? });
? ? ? ? return a.exec();
? ? }

在這個(gè)示例中,我們創(chuàng)建了一個(gè)MyThread類(lèi),它繼承自QThread,并實(shí)現(xiàn)了run函數(shù)和pause、resume函數(shù)。run函數(shù)是線(xiàn)程任務(wù)的入口點(diǎn),它會(huì)在線(xiàn)程啟動(dòng)時(shí)被調(diào)用。pause和resume函數(shù)分別用于暫停和恢復(fù)線(xiàn)程的執(zhí)行。

在main函數(shù)中,我們創(chuàng)建了一個(gè)MyThread對(duì)象,并調(diào)用start函數(shù)啟動(dòng)線(xiàn)程。然后,我們使用QTimer::singleShot函數(shù)在5秒、10秒和15秒后分別調(diào)用MyThread::pause、MyThread::resume和QThread::quit函數(shù),從而暫停、恢復(fù)和停止線(xiàn)程的執(zhí)行。

在MyThread類(lèi)中,我們使用一個(gè)標(biāo)志變量m_running來(lái)控制線(xiàn)程的執(zhí)行。當(dāng)m_running為false時(shí),線(xiàn)程任務(wù)會(huì)進(jìn)入等待狀態(tài),從而實(shí)現(xiàn)線(xiàn)程的暫停。在resume函數(shù)中,我們使用QWaitCondition類(lèi)的wakeAll函數(shù)喚醒線(xiàn)程任務(wù),使線(xiàn)程恢復(fù)執(zhí)行。在quit函數(shù)中,線(xiàn)程會(huì)在執(zhí)行完當(dāng)前任務(wù)后退出。

需要注意的是,在QThread的子類(lèi)中使用sleep函數(shù)是不推薦的,應(yīng)該使用QThread::msleep函數(shù)代替。同時(shí),在線(xiàn)程任務(wù)中使用wait函數(shù)時(shí),需要先獲取一個(gè)互斥鎖,以避免多個(gè)線(xiàn)程同時(shí)訪(fǎng)問(wèn)同一個(gè)條件變量。 

到此這篇關(guān)于C++ QT QThread啟動(dòng)、停止、暫停和恢復(fù)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C++ QT QThread啟動(dòng)停止內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • 深入c++中臨時(shí)對(duì)象的析構(gòu)時(shí)機(jī)的詳解

    深入c++中臨時(shí)對(duì)象的析構(gòu)時(shí)機(jī)的詳解

    本篇文章對(duì)c++中臨時(shí)對(duì)象的析構(gòu)時(shí)機(jī)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Qt+GDAL庫(kù)實(shí)現(xiàn)制作經(jīng)緯度坐標(biāo)轉(zhuǎn)換工具

    Qt+GDAL庫(kù)實(shí)現(xiàn)制作經(jīng)緯度坐標(biāo)轉(zhuǎn)換工具

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt和GDAL庫(kù)實(shí)現(xiàn)制作經(jīng)緯度坐標(biāo)轉(zhuǎn)換工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-04-04
  • C/C++實(shí)現(xiàn)快速排序的方法

    C/C++實(shí)現(xiàn)快速排序的方法

    這篇文章主要介紹了C/C++實(shí)現(xiàn)快速排序的方法,這幾天在找工作,被問(wèn)到快速排序,結(jié)果想不出來(lái)快速排序怎么弄的;回來(lái)搜索了一下,現(xiàn)在記錄下來(lái),方便以后查看。
    2014-12-12
  • 用C語(yǔ)言實(shí)現(xiàn)三子棋

    用C語(yǔ)言實(shí)現(xiàn)三子棋

    這篇文章主要為大家詳細(xì)介紹了用C語(yǔ)言實(shí)現(xiàn)三子棋,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Windows網(wǎng)絡(luò)編程之winsock實(shí)現(xiàn)文件傳輸示例

    Windows網(wǎng)絡(luò)編程之winsock實(shí)現(xiàn)文件傳輸示例

    這篇文章主要介紹了Windows網(wǎng)絡(luò)編程之winsock實(shí)現(xiàn)文件傳輸示例,對(duì)于學(xué)習(xí)Windows網(wǎng)絡(luò)程序設(shè)計(jì)來(lái)說(shuō)具有很好的學(xué)習(xí)借鑒價(jià)值,需要的朋友可以參考下
    2014-08-08
  • C語(yǔ)言字符函數(shù)和字符串函數(shù)示例詳解

    C語(yǔ)言字符函數(shù)和字符串函數(shù)示例詳解

    本文詳細(xì)介紹了C語(yǔ)言中字符分類(lèi)函數(shù)、字符轉(zhuǎn)換函數(shù)及字符串操作函數(shù)的使用方法,并通過(guò)示例代碼展示了如何實(shí)現(xiàn)這些功能,通過(guò)這些內(nèi)容,讀者可以深入理解并掌握C語(yǔ)言中的字符串處理技巧,感興趣的朋友一起看看吧
    2025-03-03
  • Visual Studio 2022卡死分析

    Visual Studio 2022卡死分析

    本文主要介紹了Visual Studio 2022卡死分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 利用C語(yǔ)言實(shí)現(xiàn)2048小游戲的方法

    利用C語(yǔ)言實(shí)現(xiàn)2048小游戲的方法

    2048是比較流行的一款數(shù)字游戲,相信對(duì)大家來(lái)說(shuō)都不陌生,這篇文章給大家分享了利用C語(yǔ)言實(shí)現(xiàn)2048小游戲的方法,對(duì)大家學(xué)習(xí)理解C語(yǔ)言具有一定的參考借鑒價(jià)值,有需要的朋友們下面來(lái)一起看看吧。
    2016-10-10
  • C++使用VLD檢測(cè)內(nèi)存泄漏

    C++使用VLD檢測(cè)內(nèi)存泄漏

    本文主要介紹了C++使用VLD檢測(cè)內(nèi)存泄漏,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • C++入門(mén)之vector的底層實(shí)現(xiàn)詳解

    C++入門(mén)之vector的底層實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了C++入門(mén)之vector的底層實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-11-11

最新評(píng)論