前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【Go 语言社区】GO语言多核并行化的问题

【Go 语言社区】GO语言多核并行化的问题

作者头像
李海彬
发布于 2018-03-19 09:44:45
发布于 2018-03-19 09:44:45
82800
代码可运行
举报
文章被收录于专栏:Golang语言社区Golang语言社区
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main
import "fmt"
type Vector []float64
func (v Vector) DoSome(i,n int, u Vector, c chan float64) {
  var sum float64
  for ; i<n; i++ {
    sum += u[i]
  }
  c <- sum 
}
const NCPU =  2
func (v *Vector) DoAll(u Vector) {
  c := make(chan float64, NCPU)   //根据自己电脑的CPU产生对应个数的管道
  for i:=0; i<NCPU; i++ {
    go v.DoSome(i*len(u)/NCPU, (i+1)*len(u)/NCPU, u, c)
  }
  var sum float64 = 0.00
  for i:=0; i<NCPU; i++ {
    sum += <-c 
  }
  fmt.Println(sum)
}
func main() {
  var v Vector
  u := []float64{1.00, 2.00, 3.00, 4.00, 5.00, 6.00}
  v.DoAll(u)
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Go语言并发编程总结
Golang :不要通过共享内存来通信,而应该通过通信来共享内存。这句风靡在Go社区的话,说的就是 goroutine中的 channel ....... 他在go并发编程中充当着 类型安全的管道作用。 1、通过golang中的 goroutine 与sync.Mutex进行 并发同步 import( "fmt" "sync" "runtime" ) var count int =0; func counter(lock * sync.Mutex){ lock.Lock
李海彬
2018/03/23
1.3K0
Go的代码规范指南-新人必看
环境设置:*nix环境或者Mac环境,安装go语言目录,默认是usr/local/go,如果想要让代码运行,需要将项目放到usr/local/go/src目录下,如果忘记了go的配置目录,可以通过go env查看go的环境变量设置。如果不希望每次使用sudo权限执行,可以通过设置用户目录下创建~/.bashrc文件,增加 用户目录的环境变量设置比如
小诚信驿站
2019/10/01
1.9K0
Go的代码规范指南-新人必看
iperf3命令使用
iperf3下载:https://iperf.fr/iperf-download.php#fedora
py3study
2020/01/06
4.9K0
iperf3测试Kubernetes Service的四层性能(下)
继续上篇文章 iperf3测试Kubernetes Service的四层性能(上)
后端云
2021/10/09
6930
网络测试,带宽测试,流量测试
节选自《Netkiller Testing 手札》网络测试章节 第 14 章 网络测试 目录 14.1. iperf3 - perform network throughput tests 14.1.1. Server 14.1.2. Client 14.2. Clumsy 差网络环境模拟工具 14.1. iperf3 - perform network throughput tests Measurement tool for TCP/UDP bandwidth performance Iperf
netkiller old
2018/03/05
4.2K0
实效go编程--4
func handle(queue chan *Request) { for r := range queue { process(r) } } func Serve(clientRequests chan *Request, quit chan bool) { // 启动处理程序 for i := 0; i < MaxOutstanding; i++ { go handle(clientRequests) } <-quit
李海彬
2018/03/26
7960
一款强大的压测带宽工具-iperf3
Iperf3是一个广泛使用的网络性能测量和调整工具。它的意义在于它是一个跨平台的工具,可以为任何网络提供标准化的性能测量。Iperf3具有客户端和服务器功能,可以创建数据流来测量两端之间单向或双向的网络吞吐量。典型的iperf3输出包含一个有时间标记的数据传输量和吞吐量测量的报告。
隔壁没老王
2025/01/18
2240
iperf3测试Kubernetes Service的四层性能(上)
从docker hub下载一个iperf3的镜像 networkstatic/iperf3 - Docker Image | Docker Hub
后端云
2021/10/09
1.4K0
深入理解kubernetes(k8s)网络原理之六-同主机pod连接的几种方式及性能对比
本来说这一篇是要撸个cni出来的,但感觉这个没什么好说的,cni的源码github一大堆了,大概的套路也就是把前面说的命令用go语言实现一下,于是本着想到啥写啥的原则,我决定介绍一下相同主机的pod连接的另外几种方式及性能对比。
一生无聊
2021/09/08
1.5K0
深入理解kubernetes(k8s)网络原理之六-同主机pod连接的几种方式及性能对比
Golang语言--- channel
// xuhh_go_channel project main.go /* channel 1. channel 在读取数据的时候,如果此时通道内没有数据,则会阻塞。 在取数据的时候,如果此时通道内没有数据,则也会阻塞。 2. channel 在创建的时候会存在一个数据缓冲,如果通道内存入的数据超过缓冲,则就会崩溃。 range 在遍历 channel 的时候需要注意的问题: 1. range在遍历channel的时候,一直在运行,直到clos
李海彬
2018/03/21
9890
GoLang协程与通道---下
假设我们需要处理很多任务;一个worker处理一项任务。任务可以被定义为一个结构体(具体的细节在这里并不重要):
大忽悠爱学习
2022/08/23
6190
GoLang协程与通道---下
深入理解kubernetes(k8s)网络原理之四-pod流量控制
在前面的几篇文章中,我们解决了pod连接主机、pod连接外网、pod与相同节点或不同节点的pod连接、用clusterIP和nodeport的方式访问pod等几个问题,可以说,对于组织pod的网络的每一环都已经完成了。
一生无聊
2021/09/01
4.4K0
深入理解kubernetes(k8s)网络原理之四-pod流量控制
iperf3使用记录
-l参数可以控制发包大小,默认是128KB的包,可以用tcpdump抓下应用发包大小,做下模拟。
mingjie
2024/04/09
2390
【Go 语言社区】Golang语言的多核并行化例子
写了个多核跑程序的例子,从《go语言编程而来》。关键就是runtime.NumCPU()读出cpu核数,runtime.GOMAXPROCS(MULTICORE)控制使用多个cpu核心。据说以后不会这么麻烦。看了一下运行时间,其实没有变快- -可能是因为这种纯加法太简单了,作为一个例子以后需要可以看一下。 package main import ( "fmt" "runtime" "time" ) const COUNT int = 100 const SIZ
李海彬
2018/03/19
1.3K0
☀️苏州程序大白解析Linux 中的虚拟网络接口☀️《❤️记得收藏❤️》
注意: 本文中使用 ip 命令创建或修改的任何网络配置,都是未持久化的,主机重启即消失。 ​
苏州程序大白
2021/10/20
2.2K0
Golang语言社区--Go语言基础第四节类型
大家好,我是Golang语言社区主编彬哥,这节给大家讲解Go语言中的类型。
李海彬
2018/03/07
8320
Golang语言社区--Go语言基础第四节类型
Go语言的基本概念与语法 - Java技术债务
按照约定,包名与导入路径的最后一个元素相同。例如,"math/rand" 包中的源码均以packagerand` 语句开始.
Java技术债务
2024/06/21
860
掌握一门语言Go
摘要:Go语言的优势不必多说,通过本篇文章,让我们花时间来掌握一门外语,Let's Go! 关键字:Go语言,闭包,基本语法,函数与方法,指针,slice,defer,channel,goroutine,select Go开发环境 针对Go语言,有众多老牌新厂的IDE。本地需要下载Go安装包,无论Windows还是Linux,安装差不多。这里推荐手动安装方式, 安装包下载地址:https://www.golangtc.com/download 解压缩存放相应位置(linux可选位置usr/loc
文彬
2018/05/03
1.1K0
让Golang利用多核CPU能力来计算π的值
使用go的routines和channel,可以充分利用多核处理器,提高高CPU资源占用计算的速度。如下列计算π的值
EltonZheng
2021/01/26
1.7K0
我为什么放弃Go语言?
👉腾小云导读 你在什么时候会产生“想要放弃用 Go 语言”的念头?也许是在用 Go 开发过程中,接连不断踩坑的时候。本文作者提炼和总结《100 Go Mistakes and How to Avoid Them》里的精华内容,并结合自身的工作经验,盘点了 Go 的常见典型错误,撰写了这篇超全避坑指南。让我们跟随文章,一起重拾用 Go 的信心~ 👉目录 1 注意 shadow 变量 2 慎用 init 函数 3 embed types 优缺点 4 Functional Options Pattern 传递参数
腾讯云开发者
2023/06/06
1.7K0
我为什么放弃Go语言?
相关推荐
Go语言并发编程总结
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文