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

历下网站建设长春网站建设制作

历下网站建设,长春网站建设制作,做网站的难点是什么,国内网站开发不用wordpress1、概 述 并发是指在同一时间段内,能够处理多个任务的能力。为了提升应用的响应速度与帧率,以及防止耗时任务对主线程的干扰,HarmonyOS系统提供了异步并发和多线程并发两种处理策略。 异步并发:指异步代码在执行到一定程度后会被…

1、概 述

并发是指在同一时间段内,能够处理多个任务的能力。为了提升应用的响应速度与帧率,以及防止耗时任务对主线程的干扰,HarmonyOS系统提供了异步并发和多线程并发两种处理策略。

  • 异步并发:指异步代码在执行到一定程度后会被暂停,以便在未来某个时间点继续执行,这种情况下,同一时间只有一段代码在执行。

  • 多线程并发:它允许在同一时间段内同时执行多段代码。在主线程继续响应用户操作和更新UI的同时,后台也能执行耗时操作,从而避免应用出现卡顿。

并发能力在多种场景中都有应用,其中包括单次I/O任务、CPU密集型任务、I/O密集型任务和同步任务等。我们可以根据不同的场景,选择相应的并发策略进行优化和开发。

ArkTS支持异步并发和多线程并发。

    • Promise和async/await提供异步并发能力,适用于单次I/O任务的开发场景。(之前我们已经讨论过,参看文章👉🏻 异步场景: promise、async函数与await命令介绍)

    • TaskPool和Worker提供多线程并发能力,适用于CPU密集型任务、I/O密集型任务和同步任务等并发场景。

目前ArkTs提供的多线程并发能力都基于Actor并发模型,在介绍TaskPool和Worker前,我们先了解下多线程并发中的两个并发模型:Actor并发模型、内存共享并发模型。

为了解释两个并发模型,后文以经典的生产者消费者问题为例,对比呈现这两种模型在解决具体问题时的差异。

2、Actor并发模型

Actor并发模型中,每一个线程都是一个独立Actor,每个Actor有自己独立的内存,Actor之间通过消息传递机制触发对方Actor的行为,不同Actor之间不能直接访问对方的内存空间。

⭐️ Actor并发模型特点:Actor模型不同角色之间并不共享内存,生产者线程和UI线程都有自己独占的内存。

在生产者消费者问题中,过程为:生产者生产出结果后通过序列化通信将结果发送给UI线程,UI线程消费结果后再发送新的生产任务给生产者线程。示意图如下:

图片

以下示例简单展示了如何使用基于Actor模型的TaskPool并发能力来解决生产者消费者问题【重点关注4~8行,11~14行,35~39行】。

import { taskpool } from '@kit.ArkTS';// 跨线程并发任务@Concurrentasync function produce(): Promise<number>{  // 添加生产相关逻辑  console.log("producing...");  return Math.random();}class Consumer {  public consume(value : Object) {    // 添加消费相关逻辑    console.log("consuming value: " + value);  }}@Entry@Componentstruct Index {  @State message: string = 'Hello World'  build() {    Row() {      Column() {        Text(this.message)          .fontSize(50)          .fontWeight(FontWeight.Bold)        Button() {          Text("start")        }.onClick(() => {          let produceTask: taskpool.Task = new taskpool.Task(produce);          let consumer: Consumer = new Consumer();          for (let index: number = 0; index < 10; index++) {            // 执行生产异步并发任务            taskpool.execute(produceTask).then((res : Object) => {              consumer.consume(res);            }).catch((e : Error) => {              console.error(e.message);            })          }        })        .width('20%')        .height('20%')      }      .width('100%')    }    .height('100%')  }}

3、内存共享并发模型

内存共享并发模型中,多个线程同时执行复数任务,这些线程依赖同一内存并且都有权限访问,线程访问内存前需要抢占并锁定内存的使用权,没有抢占到内存的线程需要等待其他线程释放使用权再执行。

⭐️ 内存共享并发模型特点:线程间共享内存,内存的操作有排他性。

为了避免不同生产者或消费者同时访问一块共享内存的容器时产生的脏读,脏写现象,同一时间只能有一个生产者或消费者访问该容器,也就是不同生产者和消费者争夺使用容器的锁。当一个线程获取锁之后其他线程需要等待该线程释放锁之后才能重新尝试获取锁以访问该容器。示意图如下:

图片

以下示例伪代码和示意图展示了如何使用内存共享模型解决生产者消费者问题。

// 此段示例为伪代码仅作为逻辑示意,便于开发者理解使用内存共享模型和Actor模型的区别BufferQueue {    Queue queue    Mutex mutex    add(value) {        // 尝试获取锁        if (mutex.lock()) {            queue.push(value)            mutex.unlock()        }    }    take() {        // 尝试获取锁        if (mutex.lock()) {            if (queue.empty()) {                return null            }            let res = queue.pop(value)            mutex.unlock()            return res        }    }}// 构造一段全局共享的内存let g_bufferQueue = new BufferQueue()Producer {    run() {        let value = random()        // 跨线程访问bufferQueue对象        g_bufferQueue.add(value)    }}Consumer {    run() {        // 跨线程访问bufferQueue对象        let res = g_bufferQueue.take()        if (res != null) {            // 添加消费逻辑        }    }}Main() {    let consumer = new Consumer()    let producer = new Producer()    // 多线程执行生产任务    for 0 in 10 :        let thread = new Thread()        thread.run(producer.run())        consumer.run()}​​​​​​​
Actor并发模型对比内存共享并发模型的优势在于不同线程间内存隔离,不会产生不同线程竞争同一内存资源的问题。开发者不需要考虑对内存上锁导致的一系列功能、性能问题,提升了开发效率。
http://www.tj-hxxt.cn/news/116961.html

相关文章:

  • 做3d动画的斑马网站百度指数关键词未收录怎么办
  • 聊城哪里做优化网站2022年热点营销案例
  • 东庄水利建设公司网站提高seo排名
  • 网站云解析域名解析百度推广售后服务电话
  • 链家网站谁做的国际局势最新消息今天
  • 做网站商机搜索引擎营销
  • 媒体发稿平台seo点石论坛
  • 网站首页的文字下拉怎么做湘潭网络推广
  • 展示商品的网站怎么做湖南好搜公司seo
  • 做网站签订合同网站一般怎么推广
  • 哪家网站建设服务好手游推广加盟
  • 做外贸哪个网站比较好网站优化推广公司排名
  • 建设网站图网站推广的目的
  • 给个网站能看的优化二十条
  • 物流百度推广怎么做网站今天刚刚发生的重大新闻
  • 海南网站制作域名停靠网页推广大全2021
  • 网站公司模板互联网广告精准营销
  • 仿站建站教程seo的基本内容
  • 济南网站制作公司哪家技术好女生学网络营销这个专业好吗
  • 企业网站建设公司哪家好seo网站优化推广
  • 做音箱木工网站app拉新推广平台渠道商
  • 摄影工作室网站模板百度网盘app
  • 卓训网是个什么网站培训机构排名
  • 宁波做网站优化的公司seo优化是什么意思
  • 如何做汽车团购网站互联网营销师培训学校
  • 建设网站可选择的方案有网站快速优化排名排名
  • 代做道路毕业设计网站短视频seo是什么
  • 没有英文网站怎么做外贸百度小说排行榜前十名
  • 关于旅游类网站建设设计方案平台推广营销
  • 中国老区建设促进会网站所有关键词