锁与linux中的锁

加锁和解锁:当某个进程进入临界区,会被加持上某种类型的锁,当其他进程在该进程没有释放该锁时进入临界区,它将会被设置成睡眠状态,然后被置入等待队列,当该进程解锁时,内核将从等待优先级队列中寻找下一个进程并将其置为就绪状态。
互斥量(Mutex):互斥量的释放并不仅仅依赖于释放操作,还可以引入一个定时器属性。如果在释放操作执行前发生定时器超时,则互斥量也会释放代码块或共享存储区供其他线程访问。当有异常发生时,可使用try-finally语句来确保互斥量被释放。定时器状态或try-finally语句的使用可以避免产生死锁。
递归锁(Recursive Lock):递归锁是指可以被当前持有该锁的线程重复获取,而不会导致该线程产生死锁的锁类型。
简述:获取一个线程并加上锁L->aquire(),然后对线程进行处理,当线程信号量处理示意完毕,释放该锁L->release();。
读写锁(Read-Write lock):允许多个线程进行读访问,但是只允许一个线程进行修改操作.
旋转锁(Spin Lock):旋转锁是一种非阻塞锁,由某个线程独占。采用旋转锁时,等待线程并不静态地阻塞在同步点,而是必须“旋转”,不断尝试直到最终获得该锁。旋转锁适合于任何锁持有时间少于将一个线程阻塞和唤醒所需时间的场合。(衍生顺序锁)

你可能感兴趣的:(作业)