微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

golang多核设置

单核执行如果for前面或者中间不延迟,主线程不会让出cpu,导致异步的线程无法执行,

从而无法设置flag的值,从而出现死循环

实例代码

packagemain

import(
	"fmt"
	"runtime"
	_"time"
)

var(
	flag=false
	strstring
)

funcfoo(){
	flag=true
	str="setupcomplete!"
}

funcmain(){
	runtime.GOMAXPROCS(1)
	gofoo()
	//time.Sleep(1*time.Second)
	for{
		ifflag{
			break
		}
	}
	fmt.Println(str)
}

解决办法:1、for中间或者前面加延迟 2、runtime.GOMAXPROCS(1)改成runtime.GOMAXPROCS(2)

原文地址:https://www.jb51.cc/go/190152.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐