c++ linux如何加锁
时间: 2024-01-31 13:02:56 浏览: 78
在 Linux 中,可以使用 POSIX 线程库(pthread)来实现线程同步和加锁。常用的锁包括互斥锁(Mutex)、读写锁(ReadWrite Lock)、自旋锁(Spin Lock)等。
下面是一个使用互斥锁的示例:
```c++
#include <pthread.h>
// 定义互斥锁
pthread_mutex_t mutex;
void* thread_func(void* arg) {
// 加锁
pthread_mutex_lock(&mutex);
// 线程执行的代码
// 解锁
pthread_mutex_unlock(&mutex);
}
int main() {
// 初始化互斥锁
pthread_mutex_init(&mutex, NULL);
// 创建线程
pthread_t thread;
pthread_create(&thread, NULL, thread_func, NULL);
// 主线程执行的代码
// 等待线程结束
pthread_join(thread, NULL);
// 销毁互斥锁
pthread_mutex_destroy(&mutex);
}
```
在上面的代码中,我们首先定义了一个互斥锁 `mutex`,然后在线程函数 `thread_func` 中使用 `pthread_mutex_lock` 函数来加锁,用 `pthread_mutex_unlock` 函数来解锁。在主函数中,我们初始化了互斥锁,创建了一个线程,并等待线程结束后销毁互斥锁。
需要注意的是,加锁和解锁的代码必须成对出现,否则会导致死锁或者程序崩溃。同时,在多线程编程中,还需要注意线程安全的问题,避免出现竞态条件等问题。
阅读全文