锁的机制原理

  • Post author:
  • Post category:其他




1.什么是锁

   锁能够保证只有一个线程在被锁的程序代码段执行,所以说一个锁只能被一个线程持有。



2.实现锁的机制

 中断机制,但是只能保证单核,原子类,但是只能保证基本数据类型,自旋锁,信号量

中断:
中断是cpu的一种机制,在特殊情况下触发,在操作系统启动后就会初始化中断表,包括硬件中断和软中断。
中断的时候,不允许其它中断,通过当前机制可以实现同一个时刻能够执行一段程序序列,缺点,耗费性能不说,还需要不断的上下文切换。
原子类锁: 只能保证基本数据类型的同步机制,通过硬件实现

自旋锁:自旋锁的意思是,一个线程获取锁后,再来一个线程想要获取同一把锁,如果没获取到,会

执行重复去获取,不会释放cpu,缺点就是,不会阻塞,cpu空转,适合短任务,不适合长任务,底层实现是通过原子操作实现。

信号量:p操作和v操作。 能够实现锁操作以及同步操作。

实现锁操作的步骤,将信号量的资源量设置为1,如果当前被P操作,资源原子减去1,为0,下一个线程p获取锁,资源继续同步减去1,判断资源是否小于等于0,代表无锁可获取,并且加入同步等待队列,

释放锁的时候,释放1个资源,唤醒一个同步队列上的线程。

实现同步的操作,资源设置为0,p,直接阻塞自己,执行其它操作后 ,其它线程执行v.

锁都是基于原子操作,原子操作基于硬件实现,什么是原子操作,原子性,代表不可分隔,要么全部执行,要么不执行,并且只允许一个线程执行, 原子性实现的原理,使用总线锁保证原子性。



版权声明:本文为qq_35461298原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。