两个协程交替输出1-20

package main

import (
    "fmt"
    "runtime"
    "time"
)

func main() {
    runtime.GOMAXPROCS(1)
    go func() {
        for i := 1; i <= 10; i++ {
            fmt.Println(2*i - 1)
            runtime.Gosched()
        }
    }()
    go func() {
        for i := 1; i <= 10; i++ {
            fmt.Println(2 * i)
            runtime.Gosched()
        }
    }()
    time.Sleep(3 * time.Second)
}

原理:runtime.GOMAXPROCS(1)设置单核,runtime.Gosched()让出时间片

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 并发 concurrency Goroutine 通过通信来共享内存,而不是通过共享内存来通信 Channel是G...
    Link_Biao阅读 3,929评论 0 0
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,003评论 3 119
  • 概要 本文从几个角度入手,描述和学习调度器原理 讲解调度器的基本概念 go语言的作者实现的C的协程库 libtas...
    zengfan阅读 6,422评论 0 21
  • 都说父母之爱最是伟大,母爱如海,对待孩子温柔,耐心,包容,如大海般包容孩子的缺点,如柔水般洗涤孩子的心灵。父爱如山...
    沐菱阅读 298评论 0 2
  • 今天买了一本以前很火的答案书。 有一点偏执的相信也许会成真就像书上写的“如我所愿” 但世事哪可完美,我们只能愿错轻...
    异想布岛阅读 164评论 0 0