为什么不要频繁创建和停止goroutine

本文阅读 1 分钟
首页 golang 正文

题目序号:838

题目来源:新浪

频次:

答案1:(J_r_白)

频繁的创建和销毁goroutine带来的开销不仅仅是goroutine创建和销毁本身。更大的开销是由于goroutine的Stack初始栈大小只有2K,如果运行过程中调用链比较长,超过的这个大小的时候,栈会自动地扩张。这个时候会调用到一个函数runtime.morestack。开一个goroutine本身开销非常小,但是调用morestack进行扩栈的开销是比较大的。如果函数的栈扩张了,引用原栈上的对象都需要重新改变,指针都要重定位到新的栈。栈越大,涉及到需要调整的对象越多,调用morestack的时候开销也越大

本文来自投稿,不代表本站立场,如若转载,请注明出处:
syncpool的实现原理
« 上一篇 09-17
问了sync.Map(我说我对sync.Pool比较熟,就说Pool了)
下一篇 » 09-17

发表评论

发表评论