亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++實(shí)現(xiàn)延遲的方法詳解

 更新時(shí)間:2022年12月27日 10:24:07   作者:woquNOKIA  
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)延遲的三個(gè)方法,文中的示例代碼講解詳細(xì),對(duì)我們深入了解C++有一定的幫助,感興趣的小伙伴可以學(xué)習(xí)一下

1、stl方式

std::this_thread::sleep_for(std::chrono::milliseconds(3000));

或std::this_thread::sleep_for(std::chrono::seconds(3));

(1)std::this_thread::yield (): 線程調(diào)用該方法時(shí),主動(dòng)讓出 CPU,并且不參與 CPU 的本次調(diào)度,從而讓其他線程有機(jī)會(huì)運(yùn)行。在后續(xù)的調(diào)度周期里再參與 CPU 調(diào)度。這是主動(dòng)放棄 CPU 的方法接口。

(2)std::sleep_for ():線程調(diào)用該方法時(shí),同樣會(huì)讓出 CPU,并且休眠一段時(shí)間,從而讓其他線程有機(jī)會(huì)運(yùn)行。等到休眠結(jié)束時(shí),才參與 CPU 調(diào)度。這也是主動(dòng)放棄 CPU 的方法。

兩者的不同很明顯,yield () 方法讓出 CPU 的時(shí)間是不確定的,并且以 CPU 調(diào)度時(shí)間片為單位。而 sleep_for () 讓出 CPU 的時(shí)間是固定的。

yield () 的實(shí)現(xiàn)依賴于操作系統(tǒng) CPU 調(diào)度策略,在不同的操作系統(tǒng)或者同一個(gè)操作系統(tǒng)的不同調(diào)度策略下,表現(xiàn)也可能是不同的。

yield簡(jiǎn)單示例如下

#include <iostream>
#include <thread>

int main(){ 
    std::thread thread1([]{
        while (true) {
            std::cout<<"myThread1"<<std::endl;
            std::this_thread::yield();
            
        }
        
    });
    std::thread thread2([]{
        while (true){ 
            std::cout<<"myThread2"<<std::endl;
            std::this_thread::yield();
            
        }
        
    });
    
    if (thread1.joinable())
        thread1.join();
        
    if (thread2.joinable())
        thread2 .join();
        
return 0;
}

2、用boost實(shí)現(xiàn), 沒有用過

boost::this_thread::sleep( boost::posix_time::seconds(3) );

boost::this_thread::sleep( boost::posix_time::milliseconds(3000) );

3、sleep

#ifdef _WIN32
#include <windows.h>
#else
#include <unistd.h>
#endif // _WIN32

void sleepcp(int milliseconds) // 跨平臺(tái) sleep 函數(shù)
{
    #ifdef _WIN32
        Sleep(milliseconds);//釋放cp
    #else
        usleep(milliseconds * 1000);
    #endif // _WIN32
}

知識(shí)補(bǔ)充

c++中實(shí)現(xiàn)sleep的三種方式(跨平臺(tái))

1、stl方式

//by 鳥哥 用stl實(shí)現(xiàn)sleep
#include <iostream>
#include <chrono>
#include <thread>
using namespace std;
int main(){
    cout<<"sleep前"<<endl;
    std::this_thread::sleep_for(std::chrono::milliseconds(3000));
    cout<<"sleep后"<<endl;
    
}

運(yùn)行結(jié)果:

sleep前
sleep后

2、用boost實(shí)現(xiàn)

//by 鳥哥 用boost實(shí)現(xiàn)sleep
#include <iostream>
#include <boost/thread/thread.hpp>
using namespace std;
int main()
{
    cout<<"sleep前"<<endl;
    
    boost::this_thread::sleep( boost::posix_time::seconds(3) );
    cout<<"3秒后"<<endl;
    boost::this_thread::sleep( boost::posix_time::milliseconds(3000) );
    cout<<"3秒后"<<endl;
    return 0;
}

運(yùn)行結(jié)果:

sleep前
3秒后
3秒后

3、sleep

//by 鳥哥 實(shí)現(xiàn)sleep
#include <iostream>

#ifdef _WIN32
    #include <windows.h>
#else
    #include <unistd.h>
#endif // _WIN32

using namespace std;


void sleepcp(int milliseconds) // 跨平臺(tái) sleep 函數(shù)
{
    #ifdef _WIN32
        Sleep(milliseconds);
    #else
        usleep(milliseconds * 1000);
    #endif // _WIN32
}
int main()
{
    cout << "sleep前" << endl;
    sleepcp(3000);
    cout << "3秒后" << endl;
}

運(yùn)行結(jié)果:

sleep前
3秒后

到此這篇關(guān)于C++實(shí)現(xiàn)延遲的方法詳解的文章就介紹到這了,更多相關(guān)C++延遲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 純c語(yǔ)言實(shí)現(xiàn)面向?qū)ο蠓治雠c示例分享

    純c語(yǔ)言實(shí)現(xiàn)面向?qū)ο蠓治雠c示例分享

    采用C語(yǔ)言實(shí)現(xiàn)的關(guān)鍵是如何運(yùn)用C語(yǔ)言本身的特性來(lái)實(shí)現(xiàn)多態(tài)、繼承面、封裝的面向?qū)ο蟮奶卣?最近給出了例子,大家可以參考使用
    2014-01-01
  • C++實(shí)現(xiàn)將內(nèi)容寫入文件的方法總結(jié)

    C++實(shí)現(xiàn)將內(nèi)容寫入文件的方法總結(jié)

    本文主要總結(jié)了一下C/C++將內(nèi)容寫入文件的方法,C的方法有些單調(diào),畢竟沒有庫(kù)函數(shù)。C++則豐富些,下面我把搜集到的整理一下,供大家參考
    2023-04-04
  • C++利用數(shù)組(一維/二維)處理批量數(shù)據(jù)的方法

    C++利用數(shù)組(一維/二維)處理批量數(shù)據(jù)的方法

    對(duì)于簡(jiǎn)單的問題,使用簡(jiǎn)單的數(shù)據(jù)類型就可以了,但是對(duì)于有些需要處理的數(shù)據(jù),只用以上簡(jiǎn)單的數(shù)據(jù)類型是不夠的,難以反映出數(shù)據(jù)的特點(diǎn),也難以有效的進(jìn)行處理,本文小編給大家介紹了C++利用數(shù)組(一維/二維)處理批量數(shù)據(jù)的方法,需要的朋友可以參考下
    2023-10-10
  • Visual Studio Code 從簡(jiǎn)介、安裝到配置所需插件詳細(xì)介紹

    Visual Studio Code 從簡(jiǎn)介、安裝到配置所需插件詳細(xì)介紹

    這篇文章給大家介紹到vs與vs code的區(qū)別,并且會(huì)詳細(xì)介紹vscode的安裝步驟,和我所了解過的插件配置,感興趣的朋友跟隨小編一起看看吧
    2020-03-03
  • C++運(yùn)算符重載與多繼承及二義性詳解

    C++運(yùn)算符重載與多繼承及二義性詳解

    繼友元知識(shí)過后,就到了今天的C++運(yùn)算符重載的內(nèi)容了,運(yùn)算符重載是C++里比較重要的內(nèi)容。這篇博文不會(huì)一下子講完各種運(yùn)算符重載,因?yàn)樘嗔肆艘膊缓梦照莆眨赃\(yùn)算符重載我準(zhǔn)備分多次記錄和分享,那么接下來(lái)進(jìn)入正文
    2022-11-11
  • C語(yǔ)言之實(shí)現(xiàn)單鏈表指定結(jié)點(diǎn)的插入方式

    C語(yǔ)言之實(shí)現(xiàn)單鏈表指定結(jié)點(diǎn)的插入方式

    這篇文章主要介紹了C語(yǔ)言之實(shí)現(xiàn)單鏈表指定結(jié)點(diǎn)的插入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 節(jié)序問題:解析大小的端判定

    節(jié)序問題:解析大小的端判定

    本篇文章是對(duì)大小的端判定進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語(yǔ)言內(nèi)存分布與heap空間分別詳細(xì)講解

    C語(yǔ)言內(nèi)存分布與heap空間分別詳細(xì)講解

    一個(gè)程序本質(zhì)上都是由 BSS 段、data段、text段三個(gè)組成的。這種概念在當(dāng)前的計(jì)算機(jī)程序設(shè)計(jì)中是非常重要的一個(gè)基本概念,并且在嵌入式系統(tǒng)的設(shè)計(jì)中也非常重要,牽涉到嵌入式系統(tǒng)執(zhí)行時(shí)的內(nèi)存大小分配,存儲(chǔ)單元占用空間大小的問題
    2022-11-11
  • 解析c語(yǔ)言中"函數(shù)調(diào)用中缺少哨兵"的情況分析

    解析c語(yǔ)言中"函數(shù)調(diào)用中缺少哨兵"的情況分析

    本篇文章是對(duì)c語(yǔ)言中"函數(shù)調(diào)用中缺少哨兵"的情況進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++?QT實(shí)現(xiàn)獲取本機(jī)網(wǎng)卡信息

    C++?QT實(shí)現(xiàn)獲取本機(jī)網(wǎng)卡信息

    這篇文章主要為大家詳細(xì)介紹了如何利用qt自帶的QNetworkInterface接口以及c++Iphlpapi庫(kù),獲取當(dāng)前windows電腦下的網(wǎng)卡信息,需要的可以參考下
    2024-01-01

最新評(píng)論