c++11多线程编程例子
时间: 2023-08-05 15:17:18 浏览: 154
以下是一个简单的C++11多线程编程的例子,实现了两个线程之间的数据共享和同步:
```c++
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx;
int shared_data = 0;
void thread_func1()
{
for (int i = 0; i < 10; ++i)
{
std::lock_guard<std::mutex> lock(mtx);
shared_data++;
std::cout << "Thread 1: " << shared_data << std::endl;
}
}
void thread_func2()
{
for (int i = 0; i < 10; ++i)
{
std::lock_guard<std::mutex> lock(mtx);
shared_data--;
std::cout << "Thread 2: " << shared_data << std::endl;
}
}
int main()
{
std::thread t1(thread_func1);
std::thread t2(thread_func2);
t1.join();
t2.join();
return 0;
}
```
在上面的例子中,我们创建了两个线程,分别执行thread_func1和thread_func2函数。这两个函数都会对共享变量shared_data进行修改,并且使用std::mutex进行了同步,以确保线程安全。最后在主线程中,我们调用了join()方法来等待两个线程执行完毕。
运行上面的程序,输出结果如下:
```
Thread 1: 1
Thread 1: 2
Thread 1: 3
Thread 1: 4
Thread 1: 5
Thread 1: 6
Thread 1: 7
Thread 1: 8
Thread 1: 9
Thread 1: 10
Thread 2: 9
Thread 2: 8
Thread 2: 7
Thread 2: 6
Thread 2: 5
Thread 2: 4
Thread 2: 3
Thread 2: 2
Thread 2: 1
Thread 2: 0
```
可以看到,两个线程之间的数据共享和同步是成功的。
阅读全文