测试机器环境:
4核8线程,32G内存
go version go1.12.6 windows/amd64
测试方法:
- 单核模式下,创建2个goroutine: sender和receiver
- sender向channel中发送信息,此时go执行调度,上下文切换至receiver
- receiver从channel中接受信息,接受完毕后,继续从channel中接受,此时上下文切换至sender
- 每循环一次,从sender切一次到receiver,再从receiver切换回来,有两次切换。即1次op,切2次上下文
func BenchmarkContextSwitch(b *testing.B) {
var wg sync.WaitGroup
begin := make