Golang中国

我遇到个现象,多个gotoutine的程序跑在单核的情况下不会出现问题,但是在多核的情况下就会退出。然后我在访问公共资源的地方加了一个互斥锁(公共资源是一个map结构的数据,这个并发的函数中对他有插入、修改和删除的操作),在多核模式下运行也不会出现问题了。
请问:为什么多个goroutine并发的执行在单核模式下,不会出现问题,在多核模式下就出问题了?

2 回复
imjj
#1 imjj • 2016-11-15 13:56

单核是单系统线程的
多核是多系统线程的

多系统线程,当然要做互斥了。

arthaslonely
#2 arthaslonely • 2016-11-18 12:03

嗯,多谢,这个我试验了,原以为golang的协程调度在单核情况下和操作系统对线程的基于时间片的调度的一样。

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。