常见的并发实现方式

任务分发的实现方式

常见的使用背景:当我们使用并发的时候,往往是需要利用多核优势,将一个任务分解成一堆可以并行的子任务,执行所有子任务,然后将所有数据汇总起来.

1. 使用多线程的实现方式

  1. 开启多个子线程
  2. 主线程会等待子线程放回.
  3. 将结果返回,并整合结果; 可能需要考虑全局变量并发写问题(加个写锁);

2. 那用go协程怎么实现(Go语言实现方式)

  1. go一个函数,开启一个协程
  2. 主线程会等待channel状态变为可读. 协程向channel写数据;
  3. 主线程获取到数据,整合结果.

  • 通过协程,我们只需要主线程从channel拿数据,主线程负责数据写入;
  • 如果是子线程负责各自数据的写入,那一般的实现为多个线程共享某个全局变量,然后每个线程都会往全局变量中写入数据,需要考虑加个写锁.

3. 那使用异步怎么实现呢? (JavaScript实现方式)

  1. 创建一堆Promise,将其放入数组中
  2. 执行Promise.all,如果是async函数,可以await Promise.all
  3. awaitt等待直到获取Promise.all函数的返回值; 或者在Promise.all的then函数中处理.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值