如何学会多线程工作?

本文探讨了为何系统级编程专家Jeff Richter和JavaScript先驱Douglas Crockford都反对在应用层使用多线程。他们认为应用层应专注于业务逻辑,而非并行执行,线程池的大小设定问题也揭示了应用层涉及线程的局限性。建议选择不包含线程概念的平台进行应用开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多线程程序入门教程详解_包你学会_灵活运用_哔哩哔哩_bilibili

线程作为一个知识点,我们当然应该要掌握,但是真的应该用多线程吗?

以前微软御用培训师Jeff Richter曾痛心疾首地说:“我曾写了一些多线程编程的书,TMD的害了不少人。” Jeff说的是自己写的什么Windows Multi-Threading Programming的书,很老了的书了,大家不一定看见过,讲授了很多多线程编程“技巧”,你要是照着这书来做……你就真被带到沟里去了。

Jeff为什么痛恨多线程呢?因为岁月让他知道,应用层牵扯到多线程就是扯淡

无独有偶,JavaScript界的泰斗(也是我的偶像)Douglas Crockford也说过:“总有人问我什么时候在JavaScript中增加线程功能,我的回答永远是:Never!” 道爷每次都要讲清楚,线程这概念在应用层根本就不应该出现,JavaScript虽然劣迹斑斑,但是语言级别一开始没有线程而且坚持没有线程,这算是一个很了不起的功能。

我给两位前辈总结一下:如果你搞系统级编程,你的确要处理多线程,但是如果你做得是应用层编程,你不该去碰多线程,所谓线程提供的只是并行执行的功能,应用层只需要把“任务”交出去,让底层去执行就好了,应用层就该关注应用逻辑,应用层为什么要自己创建线程去搞并行执行

接下来,肯定有人觉得线程池是一个好概念,好吗?我就问你,线程池应该设多大?

Jeff说微软不断提高.Net平台的线程池默认大小,100不够长到200,200不够长到500……为什么要设上限呢?难道逻辑上就不该设限制吗?之所以实践中需要设限制,是因为应用层还是摆脱不开“线程”的概念。

所以,同学们依然是要知道啥叫线程,需要知道线程相关知识,但是如果你写应用层代码要自己创建线程,你就已经输了,挑一个没有线程概念的平台来写应用吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值