1、多线程模拟售票,简单模拟一下火车票的售票系统:有100张从北京到西安的火车票,

文章正文
发布时间:2024-06-22 07:02

以下是一个简单的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 ``` 可以看到,两个线程之间的数据共享和同步是成功的。