1、自旋锁
特点:它属于busy-waiting类型的锁,线程竞争自旋锁,如果竞争不到,线程会不停的忙等待,不停的重试锁请求。如果长时间请求不到自旋锁,自旋锁看起来就像死循环一样。从自旋锁的特点来看,自旋锁只适合与竞争不太激烈(即并发争锁的线程个数不多),并且临界区不大的情况。
/* 锁住 */
void lock(Lock *lock)
{
while(1 == lock->lock);
lock->lock = 1;
}
/* 解锁 */
void unlock(Lock *lock)
{
lock->lock = 0;
}