快速了解同步和异步、阻塞和非阻塞

这篇文章纯属自己的理解,如有错误请您指出

同步和异步:

同步和异步是针对应用程序和内核交互而言

一、应用程序和内核同步交互有两种情况:

    1.应用程序等待一个操作执行完成

    2.应用程序可以去做其他事,大需要时不时的过来查看操作是否完成

二、应用程序和内核异步交互也有两种情况:

   先说明请款:这里应用程序相当于会派一个小第等待执行结果(这个假设不太严谨,但也可以)

   1.应用程序可以和小弟一起去等待(这种情况很傻)

    2.应用程序去做别的事情,当执行完成后有小弟通知自己

 

阻塞和非阻塞:

阻塞和非阻塞指的是执行I/O操作时是否,需要等待就是阻塞,不等待就是非阻塞(可能有点片面化)

 

联合使用

现在我们假设:A条件为:同步和异步  B条件为:阻塞和非阻塞

那么A和B组合就有四种情况,如图

快速了解同步和异步、阻塞和非阻塞_第1张图片

这里的阻塞和非阻塞相当于是同步和异步只能选择自己两种情况的一种

 

现在思路已经和清晰了,举一个例子:

刘老头烧水泡龙井茶的故事:

刘老头想泡龙井茶喝,但是发现水壶里没有热水了

同步阻塞:

只好打开炉灶烧热水,他就在炉灶的旁边等待直到水烧开,也喝到了茶

同步非阻塞:

上次一直旁边等待水烧开很浪费时间,这次烧水,他想起有一部电视剧现在播,然后就去客厅看电视剧,但他看的很不安心,

他怕水烧开后自己不知道,引发火灾,所以每隔一段时间就去厨房看看水是否烧开了,

在不舒服的过程中,水还是烧开了,他也喝到了茶

异步阻塞:

上次看电视剧烧水的经历让他想这样来来回回跑已不是事,要是有一个水烧开后能通知他的水壶

该多好,想着这时电视中出现了一个广告:一个水开了后可以发出声音的水壶,他二话没说就把水壶

买了回来。虽然买了一个可以在水开后自动发出声音的水壶(发声音的这个通知相当于小弟的角色),

毕竟是第一次使用他有点不放心,所以他就在一旁等待已在水烧开发出声音,他心想这个的确很好用,如愿的喝上了茶

异步非阻塞:

有了上一次的经验后,刘老头熟悉的项水壶中装入冷水,开始烧水了,这次他很专注的看电视剧,没过多久厨房传来声音,他知道水已经烧开了,美美的泡上一杯茶,开心及了

 

 

你可能感兴趣的:(os)