Go语言学习笔记-并发编程-协程机制

2019-04-22  本文已影响0人  noonenote

Thread vs Groutine

  1. 创建时默认的stack的大小

协程是更轻量级的线程

  1. 和KSE(kernel space Entity)的对应关系

如何提高并发能力

  1. 协程处理器启动时,计数器记录协程数量,当协程数量过一段时间不变时,做一个标记,遇到非内联函数,中断当前协程,把他放到协程队列的队尾。这就能处理单个协程处理时间过长的问题。
  2. 协程被系统线程中断时,如IO,协程处理器移动到另外一个系统线程中,继续执行队列中的协程,被中断的协程被唤醒时,它会被加入到某个processor的等待队列里,或全局等待队列里。
package groutine_test

import (
        "fmt"
        "testing"
        "time"
)

func TestGroutine(t *testing.T) {
        var a int
        a = 5
        fmt.Println(a)
        for i := 0; i < 10; i++ {
                go func(i int) {
                        //time.Sleep(time.Second * 1)
                        fmt.Println(i)
                }(i)
        }
        time.Sleep(time.Millisecond * 50)
}
上一篇 下一篇

猜你喜欢

热点阅读