对多线程起源的思考

在某些情况下(比如网络扫描),我们会选用多线程而不是单线程来实现我们的功能。很多人说是因为多线程快,其实这是不对的。快慢只是相对而言。假如程序的几个功能不会相互影响,那么采用多线程并行执行不比单线程串行执行快。因为多线程要赔上不少线程切换时间。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值