Gosched:让出CPU时间片

Goexit:退出当前的协程

GOMAXPROCS:设置使用最大的CPU数量(哇,牛逼了。。。)

package main

import (
"fmt"
"runtime"
) func main() {
go func() {
for i:=; i<=; i++ {
fmt.Println("go")
}
}() for i:=; i<= ; i++ { fmt.Println("hello")
}
}

如果程序写在这样的话,那么子协程是永远都不会被执行的,因为在go中向来都先执行主协程,这里主协程的循环明显比子协程要短,那么子协程永远都不会被执行

所以需要主协程让出时间片去执行子协程,应该写成这个样子

package main

import (
"fmt"
"runtime"
) func main() {
go func() {
for i:=; i<=; i++ {
fmt.Println("go")
}
}() for i:=; i<= ; i++ {
//这里它必须让出时间片,让其它的协程执行完之后再回来执行它
runtime.Gosched()
fmt.Println("hello")
}
}

执行的结果

go
hello
go
go
go
go
go
hello
hello

[GO]runtime包及gosched的使用的更多相关文章

  1. go语言之进阶篇runtime包中 Gosched Goexit GOMAXPROCS的使用

    一.runtime包 1.Gosched的使用 runtime.Gosched() 用于让出CPU时间片,让出当前goroutine的执行权限,调度器安排其他等待的任务运行,并在下次某个时候从该位置恢 ...

  2. Go语言基础之runtime包

    文章引用自 Golang中runtime的使用 runtime调度器是非常有用的东西,关于runtime包几个方法: Gosched:让当前线程让出cpu以让其他线程运行,它不会挂起当前线程,因此当前 ...

  3. Golang进程权限调度包runtime三大函数Gosched、Goexit、GOMAXPROCS

    转自:https://www.cnblogs.com/wt645631686/p/9656046.html runtime.Gosched(),用于让出CPU时间片,让出当前goroutine的执行权 ...

  4. 浅析runtime包中的三个方法Gosched、Goexit、GOMAXPROCS

    Gosched 暂停当前goroutine,使其他goroutine先行运算.只是暂停,不是挂起,当时间片轮转到该协程时,Gosched()后面的操作将自动恢复 未使用Gosched的代码 packa ...

  5. golang中的runtime包

    1. runtime.Gosched  让出CPU时间片,重新等待安排任务 package main import ( "fmt" "runtime" ) fu ...

  6. Golang 入门 : 竞争条件

    笔者在前文<Golang 入门 : 理解并发与并行>和<Golang 入门 : goroutine(协程)>中介绍了 Golang 对并发的原生支持以及 goroutine 的 ...

  7. 【Go入门教程7】并发(goroutine,channels,Buffered Channels,Range和Close,Select,超时,runtime goroutine)

    有人把Go比作21世纪的C语言,第一是因为Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而Go从语言层面就支持了并行. goroutine goroutine是Go并行设计的核心.goro ...

  8. go标准库的学习-runtime

    参考:https://studygolang.com/pkgdoc 导入方式: import "runtime" runtime包提供和go运行时环境的互操作,如控制go程的函数. ...

  9. 【Go入门教程9】并发(goroutine,channels,Buffered Channels,Range和Close,Select,超时,runtime goroutine)

    有人把Go比作21世纪的C语言,第一是因为Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而Go从语言层面就支持了并行. goroutine goroutine是Go并行设计的核心.goro ...

随机推荐

  1. 列表的使用2,深COPY和浅COPY,循环列表,步长切片

    name2=names.copy() 下面我看几种奇怪的现象: 首先把源列表copy以后,把源列表第2个数值修改.那么没毛病. 如果源列表里,还包含了一个子列表:这也没毛病 如果我们这个时候修改子列表 ...

  2. hadoop集群调优-OS和文件系统部分

    OS and File System 根据Dell(因为我们的硬件采用dell的方案)关于hadoop调优的相关说明,改变几个Linux的默认设置,Hadoop的性能能够增长大概15%. open f ...

  3. python 源代码保护 之 xx.py -> xx.so

    前情提要 之前由于项目的需要,需要我们将一部分“关键代码”隐藏起来. 虽然Python 先天支持 将源代码 编译后 生成 xxx.pyc 文件,但是破解起来相当容易 -_-!! 于是搜罗到了另外一种方 ...

  4. web页面取用户控件页面中服务器控件的值

    用户控件页面后台: public string P_Name { get { return txt_P_name.Value; } set { txt_P_name.Value = value; } ...

  5. [置顶] apt-get update 更新失败----如何清除破损而且陈旧的PPA仓库 (W: Failed to fetch http://ppa.launchpad.net/jonathonf/pyt)

    我使用sudo apt-get update之后,更新失败,遇到如下错误. W: Failed to fetch http://ppa.launchpad.net/jonathonf/python-3 ...

  6. 5月11日上课笔记-js简介

    一.js 1.javascript简介: 是一门脚本语言(弱类型编程语言)(php是脚本语言) 编程语言如java,先编译后运行 脚本语言不需要编译 作用: 表单验证 页面特效 语法:和Java类似, ...

  7. 继承String?

    不能继承,因为 public final class String extends Objectimplements Serializable, Comparable<String>, C ...

  8. OpenLayers 3 之 地图视图(View)

    OpenLayers 3 之 地图视图(View) 初始化一幅地图,必备的三要素之一视图(view),这个对象主要是控制地图与人的交互,如进行缩放,调节分辨率.地图的旋转等控制.也就是说每个 map对 ...

  9. leetcode515

    /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...

  10. Ansible 快速上手

    Ansible优点: 充分利用现有设施.使用 Ansible 无需安装服务端和客户端,只要 SSH 即可.这意味着,任何一台装有 Ansible 的机器都可以成为强大的管理端.我觉得,这种去中心化的思 ...