百科问答小站 logo
百科问答小站 font logo



关于go语言协程调度的一个问题(具体请看问题描述)? 第1页

  

user avatar   yao-dong-27 网友的相关建议: 
      

Goroutine 是一种协作式多任务,而不是抢占式多任务。

一个Goroutine如果一直在计算,比如死循环,那么就会一直占用当前线程,直到它结束或者主动放弃。

但是Go系统里有很多个线程,部分被占用还会新开线程,不会让其它 Goroutine饿死。

你把GOMAXPROCS限制成 1 是你自己的问题,Go只是语言和运行库,它不是OS,不能强制Goroutine放弃CPU。

即使你用普通C++写普通多线程,如果你把某个线程的优先级设置成实时,如果系统只有一颗CPU核的话,其它线程也会统统饿死。




  

相关话题

  Go 语言的错误处理机制是一个优秀的设计吗? 
  怎么看 Go 语言依赖需要 Git 仓库可读权限? 
  如何看待七牛 CEO 许式伟开源的 Cerl? 
  为什么字节跳动选择使用 Go 语言? 
  王垠喷 Go 语言,许式伟赞 Go 语言,大家怎么看? 
  后端领域,写java的程序员普遍比写Python和go的程序员水平低吗? 
  腾讯开源的 libco 号称千万级协程支持,那个共享栈模式原理是什么? 
  Python 在大部分领域都能胜任,为什么很多企业转向了 Golang? 
  如何评价 Golang 1.5 更新? 
  王垠喷 Go 语言,许式伟赞 Go 语言,大家怎么看? 

前一个讨论
在中国,战车是什么时候开始退出冷兵器战争的,以及其原因是什么?
下一个讨论
如果集合全世界的力量,造一座山,这座山能造多高?





© 2025-05-19 - tinynew.org. All Rights Reserved.
© 2025-05-19 - tinynew.org. 保留所有权利