2021-04-24

操作的先后顺序的确定

Views: 2659 | Add Comments

在计算机领域, 两个操作的先后顺序的确定, 是一个非常严肃的科学问题, 不能仅凭人的直觉来判定.

有两种方式可以规划两个操作的先后顺序:

  • 通信协调
  • 绝对时间规划

通信协调是指, 一个操作 (B) 在明确知道另一个操作 (A) 已经结束的前提下才启动, 那么便可以判定 (B) 在 (A) 之后. 这里说的"明确知道", 包含主观上的知道, 也包括客观上的知道. 例如, 对于顺序(串行)操作, 先后顺序是明确的客观的, 即使后一个操作不关心(或者说不知道)前一个操作是否已经完成, 它也应当知道.

绝对时间规划不存在, 即使是原子钟也不是绝对时间. 因此, 绝对时间规划需要假设时间差异(gap), 让两个操作的时间区间有大于 gap 的距离.

相关讨论: 数据库的并发操作与一致性

并发操作对于程序员来说, 这个概念很常见, 但是, 很多人对它的理解未必那么准确.

这个理论有什么用?

有很多业务逻辑是严格依赖操作的先后顺序的, 先做什么, 后做什么, 做什么之前必须先做什么, 这些是业务逻辑的本质. 对于并发编程(多线程, 多进程, 分布式), 如果没有做通信协调, 那么系统必然有 BUG, 系统就是错的.

Related posts:

  1. Redis被bgsave和bgrewriteaof阻塞的解决方法
  2. Paxos 所谓的”幽灵复现”
  3. 企业级SSD硬盘fsync速度
  4. 消除JavaScript闭包的一般方法
  5. 小心递归次数限制
Posted by ideawu at 2021-04-24 10:14:44

Leave a Comment