【发布时间】:2022-06-15 21:59:10
【问题描述】:
我遇到了这两篇文章:
- https://www.geeksforgeeks.org/golang-goroutine-vs-thread/
- https://medium.com/the-polyglot-programmer/what-are-goroutines-and-how-do-they-actually-work-f2a734f6f991
我想澄清一下,应用程序是一个进程,goroutine 由 go 运行时调度程序管理,运行线程的是 goruntime 调度程序,它们是两个不同的东西。
更重要的是,它在 linux 与 windows 或任何其他操作系统上的运行方式有何不同,因为 linux 将每个“线程”和“进程”视为一项任务,无论是否有共享内存。那么是不是意味着 linux OS 中的 goroutine 有更大的空间呢。我们实际上可以创建 2 个不共享内存的 goroutines/task。
所以因为它是由操作系统决定的,所以在用户级别/代码级别我们无法真正控制它?
提前谢谢你。
【问题讨论】:
-
“由操作系统决定”是什么意思?您刚刚列出了操作系统与线程工作方式的差异。正如你所说,线程和 goroutine 是两种不同的东西。
-
你根本无法直接控制 Go 中的线程,所以我不确定你在这里问什么。