我经常听说 Linux 线程很重(需要 8mb 堆栈大小),这就是为什么像 golang 这样的语言在用户空间中实现自己的绿色线程(分配到堆)。这样就可以处理 100k 连接而不是 10k 连接。据我了解,其中的一个问题是与 C 的互操作,这就是 Rust 放弃它们并使用 async/await 的原因。
但如果绿色线程如此流行,为什么 Linux 不能提供自己的极轻量级线程呢?换句话说,为什么每种语言都需要在操作系统调度程序之上拥有自己的复杂线程调度程序,而操作系统似乎更适合做出这些调度决策?