获取 P 本地队列,当从绑定 P 本地 runq 上找不到可执行的 g,尝试从全局链 表中拿,再拿不到从 netpoll 和事件池里拿,最后会从别的 P ...
func (c *Cond) Broadcast() Broadcast 会唤醒所有等待 c 的 goroutine。调用 Broadcast 的时候,可...
channel 中使用了 ring buffer(环形缓冲区) 来缓存写入的数据。ring buffer 有很多好处,而且非常适合用来实现 FIFO 式...
Go 中切片扩容的策略是这样的:首先判断,如果新申请容量大于 2 倍的旧容量,最终容量就是新申请的容 量否则判断,如果旧切片的长度小于 1024,则最终容...
defer的作用是: 你只需要在调用普通函数或方法前加上关键字defer,就完成了defer所需要的语法。当defer语句被执行时,跟在defer后面的函...
举例说明值传递只会把参数的值复制一份放进对应的函数,两个变量的地址不同,不可相互修改。地址传递(引用传递)会将变量本身传入对应的函数,在函数中可以对该变量...
数组: 数组固定长度。数组长度是数组类型的一部分,所以[3]int和[4]int是两种不同的数组类型数组需要指定大小,不指定也会根据初始化,自动推算出大小...
虽然这三个函数,都是格式化输出,但是输出的目标不一样Printf是标准输出,一般是屏幕,也可以重定向。 Sprintf()是把格式化字符串输出到指定的字符...
make的作用是为slice, map or chan的初始化 然后返回引用 make函数是内建函数,函数定义:func make(Type, size ...
go convey是一个支持Golang的单元测试框架go convey能够自动监控文件修改并启动测试,并可以将测试结果实时输出到Web界面go conv...
如果给一个 nil 的 channel 发送数据,会造成永远阻塞。如果从一个 nil 的 channel 中接收数据,也会造成永久阻塞。给一个已经关闭的 ...
当一个Goroutine(协程)获得了Mutex后,其他Goroutine(协程)就只能乖乖的等待,除非该Goroutine释放了该Mutex。RWMut...
一个 Goroutine 是一个函数或方法执行同时旁边其他任何够程采用了特殊的 Goroutine线程。Goroutine 线程比标准线程更轻量级,大多数...
与其他作为学术实验开始的语言不同,Go 代码的设计是务实的。每个功能和语法决策都旨在让程序员的生活更轻松。Golang 针对并发进行了优化,并且在规模上运...