后记:用这个漫画是想讲述进程、线程、协程这些基本概念的来龙去脉,为什么会出现这种技术,解决了什么问题。其实计算机发展到今天,本质上没什么变化,就是计算能力越来越快,存储能力越来越大。
多进程的出现一方面是因为我们要充分利用CPU的能力,因为它实在是太快了,比硬盘快几百万倍,遇到硬盘操作的时候,坚决不能让它等着,在那里空转,一定要切换到另外的程序去。 另外一方面是人们需要电脑“同时”运行多个程序:一边上网一边听歌。
线程的出现主要是为了提高响应性,漫画中举了一个界面不能响应的例子,同样的问题也会出现在服务器端,多个用户请求发给了服务器,当一个请求在等待IO操作的时候,其他请求可以用别的线程来处理。但是线程多了,创建的开销、切换的开销也会很大,所以考虑得考虑复用,形成线程池。
协程通过合作式调度,避免了多线程编程中各个各样烦人的、容易出错的问题:加锁,通知,阻塞。
【本文为51CTO专栏作者“刘欣”的原创稿件,转载请通过作者微信公众号coderising获取授权】