当前位置: 首页 > 编程笔记 >

go语言channel实现多核并行化运行的方法

简景焕
2023-03-14
本文向大家介绍go语言channel实现多核并行化运行的方法,包括了go语言channel实现多核并行化运行的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了go语言channel实现多核并行化运行的方法。分享给大家供大家参考。具体如下:

这里定义一个Add函数,用于返回两个整数的和,使用go 语句进行并行化运算,为了等待各个并行运算结束获得其返回值,需要引入channel

package main

import "fmt"

func Add(x int,y int,channel chan int) {

    sum := library.Add(x,y)

    fmt.Println(sum)

    channel <- 1

}

func main() {

    n:=10  

    channel := make(chan int ,n)

    for i:=0;i<n;i++{

        go Add(1,i,channel)

    }

    for i:=0;i<n;i++{

 

        <- channel

    }

}

最后输出:

1
2
3
4
5
6
7
8
9
10

希望本文所述对大家的Go语言程序设计有所帮助。

 类似资料:
  • Go语言具有支持高并发的特性,可以很方便地实现多线程运算,充分利用多核心 cpu 的性能。 众所周知服务器的处理器大都是单核频率较低而核心数较多,对于支持高并发的程序语言,可以充分利用服务器的多核优势,从而降低单核压力,减少性能浪费。 Go语言实现多核多线程并发运行是非常方便的,下面举个例子: 运行结果如下: 线程0, sum为:10000 线程2, sum为:10000 线程3, sum为:10

  • Channel是连接并行协程(goroutine)的通道。你可以向一个通道写入数据然后从另外一个通道读取数据。 package main import "fmt" func main() { // 使用`make(chan 数据类型)`来创建一个Channel // Channel的类型就是它们所传递的数据的类型 messages := make(chan string)

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

  • 本文向大家介绍go语言实现sqrt的方法,包括了go语言实现sqrt的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了go语言实现sqrt的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Go语言程序设计有所帮助。

  • 本文向大家介绍Go语言 channel如何实现归并排序中的merge函数详解,包括了Go语言 channel如何实现归并排序中的merge函数详解的使用技巧和注意事项,需要的朋友参考一下 前言 初识go语言不到半年,我是一次偶然的机会认识了golang这门语言,看到他简洁的语法风格和强大的语言特性,瞬间有了学习他的兴趣 最近学习 Go,但是苦于没有项目练手,于是便逼迫自己:如果想到什么有趣的东西,

  • Go语言没有提供直接的超时处理机制,所谓超时可以理解为当我们上网浏览一些网站时,如果一段时间之后不作操作,就需要重新登录。 那么我们应该如何实现这一功能呢,这时就可以使用 select 来设置超时。 虽然 select 机制不是专门为超时而设计的,却能很方便的解决超时问题,因为 select 的特点是只要其中有一个 case 已经完成,程序就会继续往下执行,而不会考虑其他 case 的情况。 超时