当大部分IO都是阻塞操作时,协程模型是不是就相当于多线程模型

Velpro · · 1128 次点击
典型的是以`阻塞IO`为IO模型实现的编程
#3
更多评论
协程就是用户态线程`ULT`,但并不是每个阻塞的连接需要一个内核支持线程`KST`,网络连接和线程,包括ULT和KST没有必然的关系,网络连接在Linux中都是IO,而IO有对应的IO模型,Linux环境下Golang选用epoll作为IO多路复用模型实现,Windows环境下Golang选用Select作为IO多路复用模型,具体可以看[Go语言设计与实现 - 网络轮询器](https://draveness.me/golang/docs/part3-runtime/ch06-concurrency/golang-netpoller/) Golang的多线程模型实现是`类似`M:N模型,但KST与ULT中间还夹着一层Process,也就是`P`,其中有`KST`只需要负责Process,然后由Process负责调度`ULT`
#1
“并不是每个阻塞的连接需要一个内核支持线程KST”,什么样的阻塞连接是需要内核线程支持的
#2