一个C++多线程学习应用案例是使用std::thread
库创建多个线程,并使用互斥锁(std::mutex
)保护共享资源。以下是一个简单的示例:
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx; // 定义一个互斥锁
int shared_resource = 0; // 定义一个共享资源
// 线程函数,用于增加共享资源的值
void increase() {
for (int i = 0; i < 100000; ++i) {
std::unique_lock<std::mutex> lock(mtx); // 获取互斥锁
++shared_resource; // 修改共享资源
lock.unlock(); // 释放互斥锁
}
}
int main() {
std::thread t1(increase); // 创建两个线程,分别执行increase函数
std::thread t2(increase);
t1.join(); // 等待线程t1执行完毕
t2.join(); // 等待线程t2执行完毕
std::cout << "Shared resource value: " << shared_resource << std::endl; // 输出共享资源的值
return 0;
}
在这个示例中,我们创建了两个线程t1
和t2
,它们都执行increase
函数。在increase
函数中,我们使用互斥锁保护共享资源shared_resource
的访问,以避免数据竞争。最后,我们在主线程中输出共享资源的值。