不可重入锁
只判断这个锁有没有被锁上,只要被锁上申请锁的线程都会被要求等待
可重入锁
不仅判断锁有没有被锁上,还会判断锁是谁锁上的,当是自己锁上的时候,那么他依旧可以再次访问临界资源,并把加锁次数加一。
设计了加锁次数,以在解锁的时候,可以确保所有加锁的过程都解锁了,其他线程才能访问。不然没有加锁的参考值,也就不知道什么时候解锁?解锁多少次?才能保证本线程已经访问完临界资源了可以唤醒其他线程访问了。实现相对复杂。
只判断这个锁有没有被锁上,只要被锁上申请锁的线程都会被要求等待
不仅判断锁有没有被锁上,还会判断锁是谁锁上的,当是自己锁上的时候,那么他依旧可以再次访问临界资源,并把加锁次数加一。
设计了加锁次数,以在解锁的时候,可以确保所有加锁的过程都解锁了,其他线程才能访问。不然没有加锁的参考值,也就不知道什么时候解锁?解锁多少次?才能保证本线程已经访问完临界资源了可以唤醒其他线程访问了。实现相对复杂。