error 是接口类型 通过 errors.New 函数生成的错误值 只能赋值給变量 而不能赋給常量
syscall 包 Errno 类型 代表了系统调用时可能发生的底层错误
这个错误类型 是error接口的实现类型 同时也是对内建类型 uintptr 的再定义类型
可以作为常量的类型 用其建的错误值列表 无法被修改
os 包 的错误值
- os.ErrClosed
- os.ErrInvalid
- os.ErrPermission
- os.IsExist
- os.IsNotExist
- os.IsPermission
进程是某个程序运行时的一个产物 一个进程至少包含一个线程
如果只包含一个线程 所有代码都会被串行地执行
第一个线程叫做主线程 其他的线程都是由进程中已经存在的线程创造出来的 其他线程只能由代码显式创建和销毁 系统一般不会去操作
go 语言的运行时 runtime 会帮忙处理系统级的线程
由代码处理创建 销毁 调度 状态变更的线程 速度快 控制灵活 非常复杂
goroutine 独特的并发编程模型
G goroutine
P processor G M 对接的中介
M machine 系统级线程
没有任何内容输出
改进方式是使用通道
使用一个通道保存一些令牌 只有先拿到一个令牌 才能启用一个 goroutine 另外在go 函数 即将执行结束的时候 还需要把令牌即时归还給那个通道
任务分发器 任务管道 固定个数的goroutine
动态任务池 动态 goroutine 池