溫馨提示×

C++ thread傳遞參數怎么實現

c++
小億
208
2023-10-31 14:59:38
欄目: 編程語言

在C++中,可以通過以下幾種方式傳遞參數給線程:

  1. 傳遞參數作為線程函數的參數:

    #include <iostream>
    #include <thread>
    
    void myFunction(int parameter) {
        std::cout << "Thread parameter: " << parameter << std::endl;
    }
    
    int main() {
        int parameter = 10;
        std::thread myThread(myFunction, parameter);
        myThread.join();
        return 0;
    }
    

    在這個例子中,myFunction是線程函數,parameter是要傳遞給線程函數的參數。在創建線程時,通過在參數列表中傳遞parameter,將其作為線程函數的參數傳遞進去。

  2. 使用lambda表達式傳遞參數:

    #include <iostream>
    #include <thread>
    
    int main() {
        int parameter = 10;
        std::thread myThread([parameter]() {
            std::cout << "Thread parameter: " << parameter << std::endl;
        });
        myThread.join();
        return 0;
    }
    

    在這個例子中,通過lambda表達式創建了一個匿名函數,并在函數體中使用了parameter。通過在方括號中使用parameter,將其作為lambda函數的捕獲變量,保證線程可以訪問到它。

  3. 使用std::ref傳遞引用參數:

    #include <iostream>
    #include <thread>
    
    void myFunction(int& parameter) {
        std::cout << "Thread parameter: " << parameter << std::endl;
    }
    
    int main() {
        int parameter = 10;
        std::thread myThread(myFunction, std::ref(parameter));
        myThread.join();
        return 0;
    }
    

    在這個例子中,myFunction的參數為引用類型。通過使用std::ref來包裝parameter,將其作為引用參數傳遞給線程函數。

這些是傳遞參數給C++線程的幾種常見方法,根據不同的情況選擇適合的方法即可。

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