溫馨提示×

C++中如何創(chuàng)建自定義線程類

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

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

#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;
}

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

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

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

0