go-runtime包
go runtime子包结构(v1.11)
- cgo
- debug
- internal
- atomic 大概是一些汇编代码和声明/定义了原子操作(不同平台的支持不一样)
- sys 定义了不同系统的参数值
- msan
- pprof
- race
- 追踪基础
- testdata
- trace
runtime 模块(按文件名)
- alg.go
声明/定义了一些hash方法,和内存/指针有关,估计是为了方便查找用的
- asm*.s
不知道具体干什么的,看起来和初始化有关
- atomic_pointer.go 和 atomic*.s
atomic*.s 给出了 .publicationBarrier (不知道干什么的)
atomic_pointer.go 定义了原子操作交换指针/内存??的各种方法 - cgo*.go
和c交互有关的各种函数
- chan*.go
channel 实现
- complier.go
默认编译器名称
- complex.go
复数实现,负数除法
complex128div - cpuprof.go
- debug.go
对debug包的支持,GOMAXPROCS方法会锁住调度进行STW.
- debugcall.go
提供对debugger函数调用的检查
- def*.go
定义的一些系统参数
- duff*.s
makeduff.go生成的
- env*.go
获取系统环境变量
- extern.go
go版本信息
- fastlog2*.go
log2 运算
- float.go
float64的操作
- funcdata.h
用c定义的Go函数的基本信息字段
- go_tls.h
???
- hash*.go
内存哈希算法
- heapdump.go
输出heap信息
- iface.go
interface{}相关实现
- ifstack*.go
// lfstack is the head of a lock-free stack.
//
// The zero value of lfstack is an empty list.
//
// This stack is intrusive. Nodes must embed lfnode as the first field.
//
// The stack does not keep GC-visible pointers to nodes, so the caller
// is responsible for ensuring the nodes are not garbage collected
// (typically by allocating them from manually-managed memory). - lock*.go
锁实现
- malloc*.go
内存分配实现?
- map*.go
map 实现
- mbarrier.go
???
- mbitmap.go
???
- mcache.go
???
- mcentral.go
???
- mem*.go
内存相关
- memclr*.s
memory clear
- memmove*.s
memory move
- mfinal.go
- mfixalloc.go
- mgc*.go
gc 相关
- mheap.go
- mkduff.go
- mkfastlog2table.go
- mkfsizeclass.go
- mmap.go
- mprof.go
- msan*.s
- msan*.go
- mszie.go
- mstats.go
- mwbuff.go
- net_plan9.go
- netpoll*.go
- os*.go
- panic.go
- plugin.go
- print.go
- proc.go
- profbuf.go
- cpuprof写出的地方
- proflabel.go
- race*.s
- race*.go
- rdebug.go
- relax_stub.go
- rt0*.s
- runtime*.go
- rwmutex*.go
- select.go
- sema.go
- sigaction.go
- signal*.go
- sigqueue.go
- sigtab*.go
- sizeclasses.go
- slice.go
- softfloat64.go
- stack.go
- string.go
- stubs*.go
- symtab.go
- sys*.go
- sys*.s
- syscall_nacl.h
- syscall*.go
- textflag.h
- time*.go
- tls*
- trace.go
- traceback.go
- type*.go
- unaligned*.go
- utf8.go
- vdso*.go
- vlop*
- wincallback.go
- write_err*.go
- zcallback_windows*