go 开多个goroutine,是在一个进程中完成,还是可能在多个进程中完成
我是说 开100个goroutine,这100个goroutine 都是在一个系统进程中完成的,还是可能因为计算量大,而在多个系统进程中完成
go 开多个goroutine,是在一个进程中完成,还是可能在多个进程中完成
我是说 开100个goroutine,这100个goroutine 都是在一个系统进程中完成的,还是可能因为计算量大,而在多个系统进程中完成
在 go 语言中, goroutine可以理解为一个线程(当然实际上并不是)。 一个进程可以创建任意多个线程(只要系统资源足够), 类似的, 一个go进程可以创建任意多个goroutine, 也就是说题主说的开 100个goroutine都是在一个系统进程中完成的. 当计算量大时, 如果系统资源有限,在运行的gorouine会小于100个,其他goroutine处在等待状态,直至调度器让他们运行,但不会创建一个新进程(实际上在系统资源紧张时,创建新进程对于计算量大的问题并无多少帮助)。
2 回答2.6k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
1 回答1.5k 阅读✓ 已解决
2 回答1.4k 阅读
1 回答1.8k 阅读
在一个进程中完成的。
但是有可能是在多线程中运行。
runtime.GOMAXPROCS(runtime.NumCPU())
在Go中可以使用这一条语句来设置运行时最大有多少个cpu来goroutine的任务,实际上指定的就是运行时最大可以开启多少个线程(系统级)来执行goroutine。更详细的内容可以看看这个: golang的goroutine是如何实现的?