异步编程中的"同步"操作理解
2020-09-02 本文已影响0人
程序员的一天
一、什么是同步?
要把"同步"说清楚,比较不容易。因为在生活中,这个词的含义比较多,不同场景下,可以有不同的理解。
当你一边玩手机,一边看电视,一边吃水果的时候,"同步"可以理解为:同时做很多事情,这些事情"同步"进行。
当你对着电脑,调整手表时间的时候,"同步"可以理解为:让两个事物的某个状态保持一致。比如,你让手表上的时间与电脑上的时间同步一致。
计算机领域中的"同步",与生活中的"同步"含义不同。
计算机领域中,"同步"的"同"不是"同时"的意思,这很重要!计算机领域中,"同步"注重的是协调一致。
协调一致,又涉及到"互斥操作"。"互斥操作"指的是:两个操作不能同时进行。比如,你不能在睡着的时候玩手机,必须协调好玩手机和睡觉的时间。
既然,存在"互斥",那么,一个事件中,某些具有依赖关系的操作就必定会存在"谁先,谁后"的顺序问题。
现在,想象这样一个场景:周末,你在家休息。平日里上班时间紧、工作重,没有好好吃饭。今日得闲,你想做一餐好吃的,犒劳犒劳自己。
做饭,是一件事情,有它自己的步骤和操作。我们暂且把它分为三步吧!
1. 准备食材
2. 烹饪食材
3. 享用美味
我们可以看到,这三步中每一步的操作都是"互斥"的。我们不能在准备食材的同时烹饪它,也不能在烹饪的过程中,享用它。
并且,三个步骤之间存在着先后的依赖关系。烹饪前我们一定得准备食材,享用美味佳肴一定在烹饪之后。(生吃会拉肚子的喔...)
三个步骤的执行顺序一定是这样的:
在计算机领域,代码中的各个模块操作按照一定的逻辑顺序先后执行,某个操作必须等待它依赖的上个操作执行结束才能开始执行。这样的流程,即为"同步"。
同步,注重的是整个代码执行过程中的协调一致。比如,你必须在输入正确的QQ号和密码后,才能使用它收发消息。
简言之,同步意味着有序,需要等待
END.
微信搜一搜,关注公众号:程序员的一天