是的,C++函數(shù)模板可以用于多線程編程。在C++中,函數(shù)模板是一種泛型編程技術(shù),它允許你編寫與數(shù)據(jù)類型無關(guān)的代碼。多線程編程是指同時執(zhí)行多個任務(wù)的能力,這通常需要編寫能夠處理多個數(shù)據(jù)線程的函數(shù)。
在C++中,可以使用函數(shù)模板來創(chuàng)建能夠處理多種數(shù)據(jù)類型的線程安全函數(shù)。例如,你可以使用std::mutex對象來保護共享資源,并確保在同一時間只有一個線程可以訪問該資源。以下是一個簡單的示例:
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx; // 全局互斥鎖
template<typename T>
void print_sum(T a, T b) {
std::lock_guard<std::mutex> lock(mtx); // 自動加鎖
std::cout << "Sum: " << a + b << std::endl;
// 自動解鎖
}
int main() {
std::thread t1(print_sum<int>, 3, 4);
std::thread t2(print_sum<double>, 2.5, 3.5);
t1.join();
t2.join();
return 0;
}
在這個示例中,我們定義了一個名為print_sum的函數(shù)模板,它接受兩個類型為T的參數(shù),并計算它們的和。我們使用std::mutex對象mtx來保護共享資源(在這種情況下是標準輸出流),以確保在同一時間只有一個線程可以訪問它。在main函數(shù)中,我們創(chuàng)建了兩個線程,分別調(diào)用print_sum函數(shù)模板,一個用于整數(shù),另一個用于浮點數(shù)。最后,我們使用join方法等待這兩個線程完成。