**
@Linux[内核同步的方法]
主要有三种:原子操作、顺序锁、信号量
**1.原子操作:
所谓原子操作 是指不会被 线程调度 机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。
2.顺序锁
顺序锁 的设计思想是:对某一个共享数据读取的时候不加锁,写的时候加锁。同时为了保证读取的过程中因为写进程修改了共享区的数据,导致读进程读取数据错误。在读取者和写入者之间引入了一个整形变量sequence,读取者在读取之前读取sequence, 读取之后再次读取此值,如果不相同,则说明本次读取操作过程中数据发生了更新,需要重新读取。
3.信号量:
信号量. 信号量 (Semaphore),有时被称为信号灯,是在 多线程 环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被 并发 调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。