在C++多線程編程中,std::thread
庫提供了一種簡單的方法來創建和管理線程
以下是一個使用C++11 std::thread
庫創建多線程的示例:
#include<iostream>
#include<thread>
#include <mutex>
std::mutex mtx; // 全局互斥鎖
void print_block(int n, char c) {
mtx.lock();
for (int i = 0; i < n; ++i) {
std::cout << c;
}
std::cout << '\n';
mtx.unlock();
}
int main() {
std::thread th1(print_block, 50, '*');
std::thread th2(print_block, 50, '$');
th1.join();
th2.join();
return 0;
}
在這個示例中,我們創建了兩個線程th1
和th2
,它們分別調用print_block
函數。print_block
函數接收兩個參數:一個整數n
和一個字符c
。函數將打印n
次字符c
。為了確保輸出的正確性,我們使用互斥鎖mtx
來同步對std::cout
的訪問。
注意,在實際應用中,通常會使用更高級的同步原語(如條件變量、讀寫鎖等)和線程安全的數據結構來處理復雜的并發問題。此外,C++標準庫還提供了其他并發工具,如std::async
、std::future
和std::promise
,以及原子操作和內存模型等。