平常生活中就有很多例子可以去研究和理解并发和多线程。
比如:
做饭有几个任务(说简单点):煮饭、炒菜
同步就是,先去煮饭,等20分钟饭煮好了再去炒菜;我想现实生活中没有人去这样做,这样效率太低。
我没必要等到把饭煮熟好了再去炒菜,可以边煮饭边炒菜,并发进行;等菜炒完了,饭也煮好了;这样节省了时间,提高了效率。
这里面我们可以看到:
--并发:煮饭和炒菜是并发执行,我就是CPU(一个人单核);说明单核也能实现并发;
--IO阻塞:煮饭的电饭煲是一个相对耗时的处理动作,比如是一个网络的请求
--非阻塞IO:我CPU按下煮饭操作后就跳出来去炒菜,这个就是非阻塞的IO处理
--事件驱动:饭好了之后有一个事件通知,比如叮的一声,我CPU听到事件可以决定是否进行处理
----上下文切换和多核:如果老婆不在,则只能我自己去盛饭,需要停下炒菜的活儿。如果老婆在,我就跟老婆说饭好了,让老婆去盛饭;我喊的过程是上下文切换,老婆去盛饭是另一个CPU线程开始执行,我不用自己去做;这就是多核带来的好处。
时间: 2024-08-10 15:13:29