同步(synchronization),计算机科学中, 指两个不同但有联系的概念:进程同步与数据同步。进程同步指多个进程在特定点会合(join up)或者握手使得达成协议或者使得操作序列有序。数据同步指一个数据集的多份拷贝一致以维护完整性。常用进程同步原语实现数据同步。
线程或进程同步
多个线程(或进程)要执行同一个特定的不可重入的程序代码块(称为临界区),这就需要适当的并发控制同步技术。否则,可能会发生竞态条件。
另一种同步要求产生于特定的操作顺序,如应该先买机票然后登机。
同步还需处理:
- 死锁
- 资源饿死(Resource starvation)
- 优先级翻转
- 忙等待
经典同步问题
- 生产者消费者问题 (有限缓存区问题);
- 读写问题(Readers–writers problem);
- 哲学家就餐问题.