自旋锁:API 与实现
typedef struct {
...
} lock_t;
void spin_lock(lock_t *lk);
void spin_unlock(lock_t *lk);
void spin_lock(lock_t *lk) {
retry:
if (!atomic_cmpxchg(&lk->status,
,
)) {
goto retry;
}
}
void spin_unlock(lock_t *lk) {
lk->status =
;
__sync_synchronize();
}