1)自旋锁:
a.由于等待锁的进程处于自旋状态,所以应该在临界代码操作耗时不长的环境下使用自旋锁
b.临界区代码中有阻塞语句时不能用自旋锁,因为阻塞语句引起进程的重新调度,启用新进程以后,新进程如果再次想获得锁时就会发生死锁。
c.临界资源中使用中断或者软中断时使用自旋锁
2)读写自旋锁:
a.多个读进程可以同时访问共享资源
b.同一时间内只允许一个写进程访问共享资源
c.读写进程不能并发
3)顺序锁:
a.读写可以并发
b.两个写进程不能并发
b.临界资源中不能有指针
4)信号量
a.当前进程无法获得信号量的时候,当前进程会休眠,新进程被启动,适合临界资源比较耗时的环境下应用
b.临界区中有阻塞语句时适合用信号量,因为用自旋锁有可能锁死
5)完成量
a.适合在进程间同步的时候用,即要求进程有先后执行顺序