大漠知秋的加油站

  • 首页
大漠知秋的加油站
你就当我的烂笔头吧
  1. 首页
  2. Golang
  3. 正文

问题 - 出让时间片

2019年1月3日 1216点热度 0人点赞 0条评论

  Go 和 Java 在并发执行上的不同还在于,Java 的多线程是一种抢占式的时间片占用规则,而 Go 的 goroutine 是一种非抢占式的时间片占用规则,也就是说,如果一个 goroutine 在使用 CPU 时间片,那么其他再多的 goroutine 都得阻塞。

  我们可以在每个 goroutine 中控制何时主动出让时间片给其他 goroutine,这可以使用 runtime 包中的 Gosched() 函数实现。

  实际上,如果要比较精细地控制 goroutine 的行为,就必须比较深入地了解 Go 语言开发包中 runtime 包所提供的具体功能。

  上面说的这种属于主动出让时间片的情况,其实往往大多数情况下,是不需要此操作的,因为大部分方法都是带有出让时间片能力的,比如:fmt 包下单 Prinxxx()、向 channel 中写入、从 channel 中读出。

标签: Golang 时间片
最后更新:2019年1月3日

大漠知秋

唯黄昏而思烛明,唯覆雪始念日暖,唯放手方知情真,今困苦而怀峥嵘,今飘零而涌乡愁,今孑然而徒唏嘘,唏嘘成愁。

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2023 大漠知秋的加油站. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备16029200号-2