前言
golang依靠 协程 大败 Java,让Java 长时间以来 难以想到方案,至今也没有做出 成熟的 协程模型解决方案,有的人 误解以为 协程 仅仅是开发服务端的人 才会用到,这个完全是误解,协程是一种解决问题的思路转变, 客户端 和 服务端 都可以使用协程来开发,用协程几句代码就能搞定的东西,你使用 多线程 会需要几倍的代码量 还会难以维护。,协程是未来程序员的主要开发方式,程序员将不再关注线程;
协程 比 多线程 的优势太多了,你可以百度吧,我问了下AI豆包,截图 你可以看下
程序员 的开发思路 演变 图:
只用主线程的程序员
这类程序员,可能占多数,这种拖控件,双击控件 写事件,只用一个主线程来运行一切 是可以的,但是现在的电脑配置都是 多核的了,你发挥不了 电脑的性能的同时,还会导致 你的软件卡顿慢;
单线程的优势
- 无
单线程的劣势
- 程序卡顿慢,因为所有的东西都在主线程里;
- 电脑的性能浪费,程序卡,而电脑的性能又不能用;
使用多线程开发的程序员
是时候 转变成协程了,无论你是开发客户端的,还是开发服务端的,还是使用各种 多线程框架的,都要向协程转变了
多线程的优势
- 相对于单个主线程,是可以发挥电脑的性能的,但是这个优势在协程面前不存在,在协程面前弱爆了;
多线程的劣势
- 各种锁,容易写出死锁的代码
- 难以维护,非常容易出错
- 相当于协程而言,创建线程的代价是高昂的
- 多线程 与 界面交互 困难,若UI界面关闭,需要杀死各种相关的线程,你需要系统底层api;
- 线程的切换 需要的 CPU 时间片 是很高的;举例:协程切换 需要1s,线程可能需要20s;
最终程序员都要转变成使用协程开发
劣势
- 无
优势
- 快速分解各种问题,协程你要是使用习惯了,你便会发现,你可以做出 之前你不敢想象的各种东西;
- 高性能,把电脑的性能,发挥到极致,丝毫不浪费;
- 从VCL、FMX底层与UI元素,互相穿插结合,让你快速开发 各种UI界面,高性能而不会出现任何卡顿;
- 等等吧,协程 比 多线程框架模式 高级太多了,你自己挖掘吧;