linux c++ 互斥锁
时间: 2023-07-28 22:09:10 浏览: 124
在Linux下使用C++进行互斥锁(Mutex)的操作,可以通过pthread库提供的函数来实现。下面是一个简单的示例代码,演示了如何在C++中使用互斥锁:
```cpp
#include <iostream>
#include <pthread.h>
// 全局变量和互斥锁
int counter = 0;
pthread_mutex_t mutex;
// 线程函数
void* increment(void* arg) {
for (int i = 0; i < 10000; ++i) {
// 上锁
pthread_mutex_lock(&mutex);
// 临界区操作
counter++;
// 解锁
pthread_mutex_unlock(&mutex);
}
return nullptr;
}
int main() {
// 初始化互斥锁
pthread_mutex_init(&mutex, nullptr);
// 创建两个线程
pthread_t thread1, thread2;
pthread_create(&thread1, nullptr, increment, nullptr);
pthread_create(&thread2, nullptr, increment, nullptr);
// 等待线程结束
pthread_join(thread1, nullptr);
pthread_join(thread2, nullptr);
// 销毁互斥锁
pthread_mutex_destroy(&mutex);
// 输出结果
std::cout << "Counter: " << counter << std::endl;
return 0;
}
```
在上述代码中,我们使用了互斥锁来保护共享变量`counter`的访问。两个线程通过互斥锁的上锁和解锁操作来确保在同一时刻只有一个线程可以访问共享变量。最后,我们输出了最终的计数器值。
注意,在编译时需要链接pthread库,可以使用以下命令进行编译:
```bash
g++ -pthread your_program.cpp -o your_program
```
希望这能解答你的问题!如果还有其他疑问,请随时追问。
阅读全文