溫馨提示×

c++ delay 怎樣避免阻塞主線程

c++
小樊
100
2024-07-26 15:34:14
欄目: 編程語言

在C++中,可以使用多線程來避免阻塞主線程。主線程可以創(chuàng)建一個新的線程來處理需要延遲的任務(wù),然后主線程可以繼續(xù)執(zhí)行其他操作。

以下是一個示例代碼,展示如何使用C++的std::thread來創(chuàng)建一個新線程來處理延遲任務(wù):

#include <iostream>
#include <thread>
#include <chrono>

void delayedTask()
{
    // 模擬一個需要延遲執(zhí)行的任務(wù)
    std::this_thread::sleep_for(std::chrono::seconds(5));
    std::cout << "Delayed task completed" << std::endl;
}

int main()
{
    std::cout << "Main thread started" << std::endl;

    // 創(chuàng)建一個新的線程來執(zhí)行延遲任務(wù)
    std::thread t(delayedTask);

    // 主線程可以繼續(xù)執(zhí)行其他操作
    for (int i = 0; i < 5; i++)
    {
        std::cout << "Main thread working... " << i << std::endl;
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }

    // 等待延遲任務(wù)線程完成
    t.join();

    return 0;
}

通過這種方式,主線程可以繼續(xù)執(zhí)行其他操作,而不會被延遲任務(wù)阻塞。延遲任務(wù)會在新線程中執(zhí)行,當(dāng)任務(wù)完成后,可以調(diào)用join()方法來等待線程結(jié)束。

0