对多线程起源的思考

来源:互联网 发布:json里面有html标签 编辑:程序博客网 时间:2024/04/29 05:07
在某些情况下(比如网络扫描),我们会选用多线程而不是单线程来实现我们的功能。很多人说是因为多线程快,其实这是不对的。快慢只是相对而言。假如程序的几个功能不会相互影响,那么采用多线程并行执行不比单线程串行执行快。因为多线程要赔上不少线程切换时间。

我的理解是:因为单线程有先天缺陷。

我们知道,计算机发展的初期,所有的程序都是顺序执行的。那时候没有多线程的概念。后来为什么人们要求有多线程呢?一是操作系统的发展使并行成为可能(这不是主要的),二是人们受够了单线程的先天缺陷。什么先天缺陷呢?一段程序,它可以从逻辑上分成几个功能模块。这些模块可能相关,也可能毫无关系。单线程的缺陷就在于,当当前模块没有执行完毕的时候,其它模块根本没有机会执行。这里我要强调的是,这是从单线程的缺陷来看的,不要小看了这个角度的转换。是因为单线程在这方面表现不好,所以我们才会思考其它的方法,而并非是因为多程好,所以我们选择了多线程。这样看有利于从发展的角度把从单线程到多线程的历史看透。而对资源的同步访问,更多的是因为多线程的出现而出现的。