操作系统层面有哪些锁

操作系统层面有哪些锁

互斥锁

  • 互斥锁在同一时刻只允许一个线程或进程访问共享资源,其他线程或进程需要等待锁的释放。

同步锁

  • 两个或两个以上的进程或线程在运行过程中协同步调,按预定的先后次序运行。比如 A 任务的运行依赖于 B 任务产生的数据

互斥与同步的区别

​ 互斥锁是通过竞争对资源的独占使用,彼此之间不需要知道对方的存在,执行顺序是一个乱序;

​ 同步锁是协调多个相互关联线程合作完成任务,彼此之间知道对方存在,执行顺序往往是有序的

自旋锁

  • 自旋锁是一种忙等待的锁,当共享资源被占用时,线程或进程不会睡眠等待,而是一直循环检查锁的状态,直到锁被释放。

自旋锁适用于锁的持有时间很短且线程间同步频繁的场景,但如果锁的持有时间较长,会浪费大量的CPU资源

读写锁

  • 读写锁允许多个线程或进程同时读取共享资源,但对于写操作,必须独占访问。
  • 这种锁适用于读取操作远远多于写入操作的场景,能够提高程序的并发性能。

读写自旋锁

  • 读写自旋锁是读写锁和自旋锁的结合,能够在读取操作频繁且竞争不激烈的情况下,提高程序的并发性能。

条件变量

  • 条件变量用于等待某个条件成立后才能访问共享资源。

死锁

  • 死锁并不是一种锁类型,而是一种系统状态,指的是两个或两个以上的线程或进程相互等待对方释放资源,从而导致都无法继续执行的情况。
posted @ 2024-10-16 19:46  guixiang  阅读(2)  评论(0编辑  收藏  举报