zoukankan      html  css  js  c++  java
  • 从零开始学Go之并发(一):Go程

    Go 程(goroutine)是由 Go 运行时管理的轻量级线程。

    当一个goroutine创建时,会和其他goroutine一起并发运行, goroutine 由 Go 程序运行时的调度和管理。

    Go 程序从 main 包的 main() 函数开始,在程序启动时,Go 程序就会为 main() 函数创建一个默认的 goroutine

    所有 goroutine 在 main() 函数结束时会一同结束。

    Go 程在相同的地址空间中运行,因此在访问共享的内存时必须进行同步。

    创建:

    go 函数名( 参数列表 )

    go say("world")

    使用 go 关键字创建 goroutine 时,被调用函数的返回值会被忽略。

    如果需要在 goroutine 中返回数据,请使用后面介绍的通道(channel)特性,通过通道把数据从 goroutine 中作为返回值传出。

    匿名函数创建:

    go func(参数列表){

    函数体

    }(调用参数列表)

    go func(s string) {
     for i := 0; i < 5; i++ {
      time.Sleep(100 * time.Millisecond)
      fmt.Println(s)
     }
    }("hello")

     

    调整并发的运行性能:

    Go 地中也可以通过 runtime.GOMAXPROCS() 函数做到

    runtime.GOMAXPROCS(逻辑CPU数量)

    这里的逻辑CPU数量可以有如下几种数值:

    <1:不修改任何数值

    =1:单核心执行

    >1:多核并发执行

    一般情况下,可以使用 runtime.NumCPU() 查询 CPU 数量,并使用 runtime.GOMAXPROCS() 函数进行设置,例如:

    runtime.GOMAXPROCS(runtime.NumCPU())

    从 Go 1.5 版本开始,默认执行上面语句以便让代码并发执行,最大效率地利用 CPU。

  • 相关阅读:
    Web API 配置Help Page
    Web API Help Page Install WebApiTestClient 简单的测试客户端
    开始一个简单的ASP.NET Web API 2 (C#)
    一些有用的huginn Agent
    jsp填坑:找不到属性
    Oracle学习笔记
    阿里云服务器端配置TensorFlow & jupyter
    重启部署在阿里云上的huginn
    centos升级python2.7到3.6之后造成yum命令报错
    取消layUI中日期选择控件默认填充日期
  • 原文地址:https://www.cnblogs.com/VingB2by/p/11119866.html
Copyright © 2011-2022 走看看