在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
,以及原子操作和内存模型等。