Go goroutine和线程的区别?

本文阅读 1 分钟
首页 golang 正文
           goroutine                                                   线程                                                        
  内存占用 创建一个 goroutine 的栈内存消耗为 2 KB,实际运行过程中,如果栈空间不够用,会自动进行扩容创建一个 线程 的栈内存消耗为 1 MB                           
创建和销毀goroutine 因为是由 Go runtime 负责管理的,创建和销毁的消耗非常小,是用户级。线程 创建和销毀都会有巨大的消耗,因为要和操作系统打交道,是内核级的,通常解决的办法就是线程池
    切换   goroutines 切换只需保存三个寄存器:PC、SP、BP
goroutine 的切换约为 200 ns,相当于 2400-3600 条指令。
当线程切换时,需要保存各种寄存器,以便恢复现场。
线程切换会消耗 1000-1500 ns,相当于 12000-18000 条指令。
本文来自投稿,不代表本站立场,如若转载,请注明出处:
如何限制 goroutine 并发数量 (channel 或 WaitGroup)
« 上一篇 09-17
分片键的选择?
下一篇 » 09-17

发表评论

发表评论