通过cas去实现自旋锁
flag的0表示现在没上锁,1表示已经上锁了
static int flag{0};
//0表示没有锁,1表示锁了int cas(int *ptr,int newp)
{int old=*ptr;*ptr=newp;return old;
}void lock()
{while(cas(&flag,1)==0){// cout<<"lock"<<endl;// cout<<flag<<endl; }
}
void unlock()
{flag=0;// cout<<"unlock"<<endl;
}
加上个测试代码
static int num=0;
void test1()
{lock();cout<<"test1 start"<<endl;for(int i=0;i<5;++i){num++;}cout<<"test1 end"<<endl;unlock();
}
void test2()
{lock();cout<<"test2 start"<<endl;for(int i=0;i<10;++i){num++;} cout<<"test2 end"<<endl;unlock();}
int mai