线程操作中同步操作与异步操作的区别

时间:2021-10-04 23:51:24

在线程基础这一块。好多时候我们很容易将同步操作和异步操作的定义混淆。

按照平常的理解,同步操作应该是多个线程同时操作某些资源,而异步操作则是需要将不同的线程分离开来操作某个资源。但事实上,其定义却刚好和上述理解相反。

正确的理解应该是这样的,异步操作,我们又可以称之为并发操作,它的意思是在操作某资源时,不同的线程跟其他线程是否进行是没有关系的,只要它获得了CPU时间片就开始运行,这样在多个线程工作时,不同的线程在不同的时间段获得CPU时间段或者是没有获得CPU时间段而处于非运行状态,但是由于非运行状态时间是非常短的,所以在我们人体感官上来讲,根本感觉不到,所以我们会觉得这些线程都是同时运行的,这也就是所谓的“异步”操作,或者说是“并发”操作。可以看到,在异步和并发上,我都给它加了一对双引号。但是对于同步操作来说,它的意思就是说多个线程一起工作是按一定的先后顺序的,相当于你干完我再干。

再说的形象点,就是打个比方,都是生产一个玩具,异步操作就是相当于多个工人正在不同的流水线上,他们之间的操作是跟其他人没有任何关系的。你干你的,我干我的,大家之间的工作是互不干涉的。而对于同步操作,就相当于多个工人都在一条流水线上,不同的工人需要相互配合,只有等上一道工序完成了,下一个工人才能进行他的工作。是按照一定的先后顺序的。