我刚开始学习围棋。Go 的优势在于用于处理多个并发连接的 goroutines。有人提到Goroutines 可以被认为是轻量级线程(但实际上不是线程),它们可以增加/缩小堆栈大小,并且它们被多路复用到多个 os 线程中。假设您有 1000 个 goroutine,那么这些 goroutine 将根据 goroutine 的阻塞和等待模式调度到本机操作系统线程。基本上,我来自 C# 和 Nodejs 背景。我很困惑它与用 C# 实现的 TaskParallelLibrary 有何不同。TaskParallelLibrary 隐藏了创建线程和管理它们的复杂性。您只需启动一个任务,CLR 就会负责将它们映射到本机线程。在这里,您可以创建数以千计的小任务,这些任务被映射和调度到 OS 线程。但是 TPL 专门解决异步问题。我的问题是 TPL 与 goroutines 有何不同?goroutines 是否使用协程(可暂停函数或?)。TPL 还将异步/系统调用操作多路复用到线程池,甚至 Go 也将系统调用多路复用到线程池。如果我的任何假设是错误的,请纠正我。任何人都可以帮助我具体实施的不同之处吗?为什么 goroutines 声称比 TPL 更快?
添加回答
举报
0/150
提交
取消