帮我用c++语言写一个自旋锁
时间: 2023-06-06 08:06:06 浏览: 107
无锁编程之自旋锁的C++实现
5星 · 资源好评率100%
好的,以下是一个简单的自旋锁实现的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
typedef struct _spinlock {
pthread_mutex_t mtx;
} spinlock_t;
void spinlock_init(spinlock_t* lock) {
pthread_mutex_init(&lock->mtx, NULL);
}
void spinlock_lock(spinlock_t* lock) {
while (pthread_mutex_trylock(&lock->mtx) != 0) {
// 如果已经被锁定,则一直自旋等待
}
}
void spinlock_unlock(spinlock_t* lock) {
pthread_mutex_unlock(&lock->mtx);
}
int main() {
spinlock_t lock;
spinlock_init(&lock);
// 加锁操作
spinlock_lock(&lock);
// 临界区代码
printf("Locked!\n");
// 释放锁
spinlock_unlock(&lock);
return 0;
}
```
在以上示例代码中,我们使用 pthread_mutex_t 结构体作为自旋锁的内部实现,并且在 spinlock_lock 函数中使用了 while 循环进行自旋等待,直到成功获取到锁才返回,以保证线程的同步。
阅读全文