当前位置: 首页 > news >正文

Go语言中工作负载类型对并发的影响

        在实际工作开发中我们需要根据工作负载是CPU密集型还是I/O密集型,使用不同的方式来解决问题。下面我们先来看这些概念,然后再讨论其影响。

在程序执行时,工作负载的执行时间会受以下因素限制:

  • CPU的速度--例如,运行归并排序算法。工作负载被称为CPU密集型。
  • I/O速度--例如,进行REST调用或数据库查询。工作负载被称为I/O密集型。
  • 可用内存量--工作负载被称为内存密集型。

注意

鉴于近几十万年来内存价格变得越来越便宜,所以最后一种类型是当今最稀少的工作负载类型。

         为什么在并发应用程序的上下文中对工作负载进行分类很重要?让我们通过一种并发模式来理解这一点:worker池。

        下面这个例子实现了一个读函数,它接收一个io.Reader参数并从中重复读取1024字节,它会把读取到的字节数传给一个task函数,这个task函数会执行一些任务。task函数会返回一个整数结果,而我们最终会返回所有整数结果之和。下面是一个串行的实现:

func read(r io.Reader) (int, error) {count := 0for {b := make([]byte, 1024)_, err := r.Read(b)if err != nil {if err =&
http://www.lryc.cn/news/337945.html

相关文章:

  • 常用的Python内置函数
  • MAC(M1芯片)编译Java项目慢且发热严重问题解决方案
  • 如何循环pandas格式的数据
  • 新零售SaaS架构:客户管理系统架构设计(万字图文总结)
  • Apache Spark
  • CentOS7编译ZLMediaKit并使能WebRTC
  • 【数据交换格式】网络socket编程温度采集智能存储与上报项目技术------JSON、TLV
  • IP地址定位技术在各领域的作用
  • 代码随想录 538. 把二叉搜索树转换为累加树
  • JavaWeb--前端--01HTML和CSS
  • Oracle SQL中的DECODE函数与NVL函数:区别与应用场景详析
  • 算法设计与分析实验报告c++实现(N皇后问题、卫兵布置问题、求解填字游戏问题、图的m着色问题)
  • 深入探索Linux中的libgdbus:GDBus库的应用和实现
  • MacOS下Qt 5开发环境安装与配置
  • jquery 实现倒计时
  • MYSQL 5.7重置root密码
  • 博客永久链接与计数
  • 基于 RisingWave 和 ScyllaDB 构建事件驱动应用
  • mysql8.0高可用集群架构实战
  • GRE/MGRE详解
  • 蓝桥杯(填空题)
  • vim快捷指令
  • LINUX 下IPTABLES配置详解
  • CentOS 网卡ifcfg-eth0 ping不通外网(www.baidu.com)
  • 【C++】类和对象②(类的默认成员函数:构造函数 | 析构函数)
  • 【ZZULIOJ】1063: 最大公约与最小公倍(Java)
  • 遍历列举俄罗斯方块的所有形状
  • 将Visio绘图导出PDF文件,使其自适应大小,并去掉导入Latex的边框显示
  • android支付宝接入流程
  • Mac 下 Python+Selenium 自动上传西瓜视频