- 主题:觉得协程不是一个太好的编程模型
这个复杂性在我看来更多是使用者带来的。
你难道要在一个协程中使用多线程模型吗?
【 在 finlab 的大作中提到: 】
:
: 协程机制与线程混用带来更高 的复杂性。
:
: 异步调用到最后,还是要同步,不如一开始就同步。
:
#发自zSMTH@CDU.MP
--
FROM 113.143.105.*
放着那么多核不用,难道只在一个核上死磕吗?
【 在 VincentGe 的大作中提到: 】
: 这个复杂性在我看来更多是使用者带来的。
: 你难道要在一个协程中使用多线程模型吗?
:
: ...................
--
FROM 223.72.70.*
async/await 的设计的角色是非常底层同步原语。
对于语言的模型都是同步的,async await 很好的标示一个函数如何被切分。
【 在 hgoldfish 的大作中提到: 】
:
: async/await 纯粹是语法问题。都是从 c# 那边抄过来的。人家 golang 和 java 搞的协程语法就是你想的那样。在程序员看来,反正 java 的 BIO 就是同步调用。至于 java 怎么在底层转成 NIO, 那是 java 编译器的事情。
:
: 【 在 finlab 的大作中提到: 】
: : 协程机制与线程混用带来更高 的复杂性。
#发自zSMTH@CDU.MP
--
FROM 113.143.105.*
那你大概是错误理解协程了,协程给你的是单进程单线程的并发模型。如何你要用对核,用多进程多线程模型。
在我看来,现在多进程线程模型的实现本身就不好。
【 在 finlab 的大作中提到: 】
:
: 放着那么多核不用,难道只在一个核上死磕吗?
:
: 【 在 VincentGe 的大作中提到: 】
: : 这个复杂性在我看来更多是使用者带来的。
#发自zSMTH@CDU.MP
--
FROM 113.143.105.*
我说的是,在语法层面是使用 async/await 还是 spawn 还是 go. 其实只是语言关键字的问题。它们的含义是差不多的。
我个人偏向使用 spawn/go 而不是传染的 async/await 丑爆了。
至于协程,具体是跨线程调度的呢,还是有栈无栈,都是另外的维度。不能和上面语法的事情混在一起说。
【 在 VincentGe 的大作中提到: 】
: async/await 的设计的角色是非常底层同步原语。
: 对于语言的模型都是同步的,async await 很好的标示一个函数如何被切分。
: #发自zSMTH@CDU.MP
: ...................
--
FROM 27.154.110.*
进程是跨不了,但是线程与协程没有绑定关系
。
即使单线程协程,也不能用线程锁,因为都在一个线程里,锁不住。
【 在 VincentGe 的大作中提到: 】
: 错
: 协程允许有锁,你这个锁的本质让一块代码是原子的,可以非常轻易的实现。
: 剩下的是实现问题,协程设计上就不应该允许跨线程进程。
: ...................
--
FROM 221.218.60.*
见10楼,最后一句。
而且,我就是在多线程模型中,有了协程需求。
整个系统是个线程池的socket服务器。
在长IO时,为数不多的线程都在等待IO。还有许多连接在等待线程。
这时候,我们需要每个连接一个协程,需要等待什么事件,让协程等待,yield线程,让他为别人服务。
【 在 VincentGe 的大作中提到: 】
: 这个复杂性在我看来更多是使用者带来的。
: 你难道要在一个协程中使用多线程模型吗?
:
: ...................
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*
多进程多线程本身挺好的,可以充分利用多核进行并行计算。
我们是先设计了多进程多线程的,高并发的服务器,后来需要的协程。
百度一下C10K。
本版搜一下:c++什么时候能提供协程版的读写socket
【 在 VincentGe 的大作中提到: 】
: 那你大概是错误理解协程了,协程给你的是单进程单线程的并发模型。如何你要用对核,用多进程多线程模型。
: 在我看来,现在多进程线程模型的实现本身就不好。
:
: ...................
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*
所以,多线程协程才有意义。
协程在线程间自由调度才有效率。
就如楼主所言,一方面在乎线程调度与协程调度那一点点时间差异,另一方面放着大量的核不用,或者不充分使用,是不是舍本求末了?
【 在 finlab 的大作中提到: 】
: 放着那么多核不用,难道只在一个核上死磕吗?
:
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*
本版搜一下:c++什么时候能提供协程版的读写socket
【 在 finlab 的大作中提到: 】
: 协程机制与线程混用带来更高 的复杂性。
:
: 异步调用到最后,还是要同步,不如一开始就同步。
: ...................
--
FROM 221.218.60.*