溫馨提示×

C++中如何創建自定義線程類

c++
小樊
112
2024-08-29 22:40:59
欄目: 編程語言

在C++中,可以通過繼承std::thread類來創建自定義線程類

#include<iostream>
#include<thread>
#include <mutex>

class CustomThread : public std::thread {
public:
    CustomThread(int id) : std::thread(&CustomThread::execute, this), m_id(id) {}

    void join() {
        if (this->joinable()) {
            std::thread::join();
        }
    }

private:
    int m_id;
    std::mutex m_mutex;

    void execute() {
        m_mutex.lock();
        std::cout << "Thread " << m_id << " is running."<< std::endl;
        m_mutex.unlock();
    }
};

int main() {
    CustomThread t1(1);
    CustomThread t2(2);

    t1.join();
    t2.join();

    return 0;
}

在這個示例中,我們創建了一個名為CustomThread的自定義線程類,它繼承自std::thread。我們重寫了join()方法,以便在調用join()之前檢查線程是否可加入。此外,我們還添加了一個私有成員變量m_id,用于存儲線程的ID。

execute()方法是線程的主要任務,它將線程ID打印到控制臺。注意,我們使用互斥鎖m_mutex來確保在多線程環境下輸出的正確性。

main()函數中,我們創建了兩個CustomThread對象,并調用它們的join()方法來等待線程完成。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女