9.1 协程机制
peter 526 3

第九章

协程机制

Thread vs. Groutine

  1. 创建时默认的 stack 的大小
    • JDK5 以后 Java Thread stack 默认为 1M
    • Groutine 的 Stack 初始化大小为 2K
  2. 和 KSE (Kernel Spcace Entity)的对应关系
    • Java Thread 是 1:1
    • Groutine 是 M:N
9.1 协程机制

上图是一个多对多的关系的简图,如果 thread 和 kernel entity 是 1:1 的关系,kernel entity 也就是系统线程直接由 CPU 进行调度,这样调度的效率非常的高,但是存在线程之间发生切换的时候,会发生内核对象的切换,这种操作开销很大。如果多个线程和一个系统线程对应,那么他们之间的切换就非常的小了。

9.1 协程机制

M:系统线程

P:Go 语言实现的协程处理器

G:协程

测试示例 1

package groutine

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

func TestGroutine(t *testing.T)  {
   for i:=0;i<10;i++{
      go func(i int) {
         fmt.Println(i)
      }(i)
   }
   time.Sleep(time.Millisecond * 50)
}
评论区

索引目录