green threads / lightweight threads
假设仅在两者中使用非阻塞操作,使用简单循环或顺序代码有什么好处吗?
for i := 0; i < 5; i++ {
go doSomethingExpensive() // using golang example
}
// versus
for i := 0; i < 5; i++ {
doSomethingExpensive()
}
据我所知
- 绿色线程有助于避免异步操作上的一些回调地狱
- 允许在 N 个内核线程上调度 M 个绿色线程
但是
- 增加了一些需要调度程序的复杂性和性能
- 当语言支持它并且执行被拆分到不同的 cpu 时更容易跨线程通信(否则顺序代码更简单)