goroutine的优点与比较

goroutine的优点:

  1. goroutine可以在用户空间调度,避免了内核态和用户态的切换导致的成本。
  2. goroutine是语言原生支持的,提供了非常简洁的语法,屏蔽了大部分底层实现。
  3. goroutine有更小的初始栈空间,goroutine消耗的资源更小,允许用户创建成千上万的实例。

Java Thread

Java里的Thread使用的是线程模型的一对一模型,每一个轻量级进程都对应着一个内核线程。Java使用的线程调度方式主要是抢占式调度。

扩展点

  1. 用户态和内核态
    内核态:进程能访问所有的内存空间和对象
    用户态:进程能访问的内存空间和对象受到限制
    用户态切换到内核态有三种方法:
    (1) 系统调用,实质是中断机制,如Linux中的INT 80H
    (2) 异常:如果当前进程运行在用户态,如果这个时候发生了异常事件,就会触发切换。如:缺页异常
    (3) 中断:软中断硬中断
  2. goroutine中的栈管理: