并发(个人收集)

Go语言调整并发的运行性能

2020-02-14  本文已影响0人  码二哥

参考:
http://c.biancheng.net/view/94.html

关键点

通过关键词汇,实现快速理解,记忆目的

其实,就一句话,Go语言可以灵活调整程序是单核执行,还是多核执行,多核执行的话,可以设置CPU的数量
1、Go的runtime里自带一个任务调度器

2、任务调度器目的

可以高效地将 CPU资源分配给每一个任务

也就是即使、高效的将CPU任务关联对应起来

3、如何查询当前服务器中,CPU核数呢?

runtime.NumCPU() 查询 CPU 数量

查询CPU核数
4、如何设置Go程序运行时所需要CPU核数?或者说,如何设置单核执行,还是多核执行呢?
runtime.GOMAXPROCS(逻辑CPU数量)

5、但是,一般建议修改这个值,让调度器自己去处理这些事情

在 Go语言程序运行时(runtime)实现了一个小型的任务调度器。这套调度器的工作原理类似于操作系统调度线程,Go 程序调度器可以高效地将 CPU 资源分配给每一个任务。传统逻辑中,开发者需要维护线程池中线程与 CPU 核心数量的对应关系。同样的,Go 地中也可以通过 runtime.GOMAXPROCS() 函数做到,格式为:
runtime.GOMAXPROCS(逻辑CPU数量)
这里的逻辑CPU数量可以有如下几种数值:

一般情况下,可以使用 runtime.NumCPU() 查询 CPU 数量,并使用 runtime.GOMAXPROCS() 函数进行设置,例如:
runtime.GOMAXPROCS(runtime.NumCPU())
Go 1.5 版本之前,默认使用的是单核心执行。从 Go 1.5 版本开始,默认执行上面语句以便让代码并发执行,最大效率地利用 CPU。

GOMAXPROCS 同时也是一个环境变量,在应用程序启动前设置环境变量也可以起到相同的作用。

上一篇 下一篇

猜你喜欢

热点阅读