单线程是什么意思?

正确的?你在读什么给我听?这都是教科书内容了……单线程,简单的说就是程序运行的时候会跑死,一次只能做一件事。

比如我上次帮你做的那个小程序,主要是在单线程中运行的。
当您单击某个按钮时,必须等待该按钮被处理后才能读取用户的设置。
如果点击“保存”它仍然读取配置,用户一定会感到卡住吧?顺序执行,简单明了。

但是单线程也有陷阱。
去年我在做大数据分析工具的时候就踩到过它。
该工具必须同时从三个地方获取数据,并且必须同时计算和写入结果。
结果,使用单线程,CPU总是满的,硬盘也极度繁忙。
供用户使用时重如磐石。
最后我们可以只增加一个多线程模块,分成几个小团队同时工作,效率就提高了一倍。

所以你看,单线程适合做什么?它适合那些不费吹灰之力、一路走来的任务,比如创建一个简单的网络爬虫,或者使用一个个人使用的小工具。
如果你正在编写一个需要很长时间计算并且需要处理很多地方的程序(例如读写数据库并同时发出网络请求),那么单个线程会有点难以承受。

解决问题非常方便。
上次有同学问我他的小程序为什么卡住了。
我查看了代码,发现是死循环。
因为在单线程中,如果程序卡在那里,你就在那里等待,不像多线程只能让一半程序卡住,另一半还在运行。
不过现在很多框架都内置了调试器,调试多线程问题其实也不错,只是心态需要更加灵活。

无论如何,这取决于你。
对于小型功能使用单线程,对于大型项目使用多线程。
不要让你的程序运行得像乌龟一样慢,用户会骂你的。

单线程是什么意思?

哎,听你这么一说,感觉单线程和多线程就像做饭一样。

想象一下您正在独自做饭,只有一个炉子(单线程)。
您清洗蔬菜(任务 1 ),然后切蔬菜(任务 2 ),然后炒蔬菜(任务 3 )。
你必须等待任务1 洗完才能开始任务2 ,并且你必须等到任务3 完成。
这样虽然不会匆忙打翻盘子(安全),但效率慢,而且会忙上很长一段时间。

但是如果请两个人帮忙的话,一个负责洗切,一个负责煎炸(多线程)。
如果洗、切、炸可以同时进行,不是更快吗?当然,两个人在一起工作的时候,也是需要沟通的。
如果指示不明确或刮刀互相碰撞时出现小事故(平行错误),必须迅速解决。

我之前的项目遇到一个问题,是单线程。
有文件处理要求。
文件不大,但是里面的操作却很多。
结果是程序挂起,无法响应其他请求。
然后,我们转向多线程和批处理,效率不断翻倍。
不过在调试的时候也是很头疼的。
如果一个线程不正确,整个系统可能会陷入混乱。

因此,单线程确实简单且安全,适合不复杂且不紧不慢的任务,例如您提到的读取文件和简单的 API 请求。
但如果确实需要大量的计算,或者需要快速响应用户操作,像我之前做的文件处理,或者你使用APP的时候就卡顿崩溃,那么多线程还是比较靠谱的。

关键是看需求。
如果你能接受较慢的速度,可以使用单线程省心。
如果你追求性能,多线程是不可避免的。
但多线程开发调试是技术活,需要时间学习。