- 主题:觉得协程不是一个太好的编程模型
协程很多场合是为了节省线程切换的成本,提高cpu的利用率。
但是经常把一个事情劈成两半,绕了半天还是要再捏到一起。
既然协程这么流行,那就不如在cpu和操作系统、编译器层面进行优化,
降低线程上下文的切换开销,统一使用线程来完成cpu的分时复用。
--
FROM 223.72.70.*
这也是个很大的好处,解放码农的:
协程使得异步代码看起来像是同步代码,开发者可以更容易地理解和调试代码,从而提高可维护性。
--
FROM 114.241.228.*
一般情况并不需要协程。
只有异步IO时,将它表达为同步,才需要。
简单点,在线程池网络编程中,长时间的同步IO,占用线程时间太长,影响别的任务。在等待IO期间,释放线程,由一个协程等待IO。
对于单线程协程,可以理解为只有一个线程的线程池,如果需要处理很多的连接,协程是必须的。
看起来是一个read函数,返回时已经完成了IO,就是同步过程。其实中途线程跑掉了,干别的去了。
【 在 finlab 的大作中提到: 】
: 协程很多场合是为了节省线程切换的成本,提高cpu的利用率。
: 但是经常把一个事情劈成两半,绕了半天还是要再捏到一起。
: 既然协程这么流行,那就不如在cpu和操作系统、编译器层面进行优化,
: ...................
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*
普通系统对性能的需求,没必要纠结这点切换的差异。
【 在 finlab 的大作中提到: 】
: 协程很多场合是为了节省线程切换的成本,提高cpu的利用率。
: 但是经常把一个事情劈成两半,绕了半天还是要再捏到一起。
: 既然协程这么流行,那就不如在cpu和操作系统、编译器层面进行优化,
: ...................
--
FROM 221.218.60.*
有时候不方便用多线程锁,用协程更容易写出可靠的代码。
--
FROM 171.213.205.*
错。
协程缺乏锁机制会出很多问题。
有人给协程写锁。
见2楼,多线程协程,有一个线程锁不允许跨越IO的要求。
单线程协程不使用线程锁,但是需要协程间互斥,就要自己想办法。
还有一种,协程组在一个线程,此外还有其他线程协同工作,互相间互斥,也是禁止线程锁跨越IO。
【 在 poocp 的大作中提到: 】
: 有时候不方便用多线程锁,用协程更容易写出可靠的代码。
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*
有了协程,更象是有了一个确定性很强的状态机
但这个状态机又跟业务有关,好象不管是 内核|编译器 ,都没有办法灵活地帮业务做一些定制
内核看着自己倒是可以用协程再提升一下性能,盲猜收益不会很大。
【 在 finlab 的大作中提到: 】
: 协程很多场合是为了节省线程切换的成本,提高cpu的利用率。
: 但是经常把一个事情劈成两半,绕了半天还是要再捏到一起。
: 既然协程这么流行,那就不如在cpu和操作系统、编译器层面进行优化,
: ...................
--
FROM 116.76.169.*
你说了半天,这些问题还是多线程带来的啊。
【 在 ylh1969 的大作中提到: 】
: 错。
: 协程缺乏锁机制会出很多问题。
: 有人给协程写锁。
: ...................
--
FROM 171.213.205.*
协程机制与线程混用带来更高 的复杂性。
异步调用到最后,还是要同步,不如一开始就同步。
比如,await readAsyn(); await processAsyn() 这种模式不过是为了让出空闲时间的控制权。
不如就在底层实现同步的read,process, 上层就直接 顺序调用,
让操作系统或编译器层面解决线程空闲的调度。
【 在 poocp 的大作中提到: 】
: 你说了半天,这些问题还是多线程带来的啊。
:
--
FROM 223.72.70.*
觉得汽车不是一个太好的交通工具
汽车很多场合是为了节省交通的成本,提高人的通行效率。
但是经常把一个事情劈成三半,先得到车库上车,到了目的地还要下车再走一段路。
既然汽车这么流行,那就不如直接开通任意门,在时空层面进行优化,
降低上下车的切换开销,直接开门既达。
--
FROM 101.228.96.*