鸿蒙OpenHarmony【异步并发 (Promise和async/await)】 ArkTS并发

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

并发概述

并发是指在同一时间内,存在多个任务同时执行的情况。对于多核设备,这些任务可能同时在不同CPU上并行执行。对于单核设备,多个并发任务不会在同一时刻并行执行,但是CPU会在某个任务休眠或进行I/O操作等状态下切换任务,调度执行其他任务,提升CPU的资源利用率。

为了提升应用的响应速度与帧率,避免耗时任务对UI主线程的影响,ArkTS提供了异步并发和多线程并发两种处理策略。

  • 异步并发是指异步代码在执行到一定程度后会被暂停,以便在未来某个时间点继续执行,这种情况下,同一时间只有一段代码在执行。ArkTS通过Promise和async/await提供异步并发能力,适用于单次I/O任务的开发场景。
  • 多线程并发允许在同一时间段内同时执行多段代码。在UI主线程继续响应用户操作和更新UI的同时,后台线程也能执行耗时操作,从而避免应用出现卡顿。ArkTS通过TaskPool和Worker提供多线程并发能力,适用于[耗时任务]等并发场景。

并发多线程场景下,不同并发线程间需要进行数据通信,不同类别对象的传输方式存在差异,包括拷贝或内存共享等。

并发能力在多种场景中都有应用,其中包括[异步并发任务]、[耗时任务]([CPU密集型任务]、[I/O密集型任务]和[同步任务]等)、[长时任务]、[常驻任务]等。开发者可以根据不同的任务诉求和场景,选择相应的并发策略进行优化和开发

异步并发 (Promise和async/await)

Promise和async/await提供异步并发能力,是标准的JS异步语法。异步代码会被挂起并在之后继续执行,同一时间只有一段代码执行,适用于单次I/O任务的场景开发,例如一次网络请求、一次文件读写等操作。无需另外启动线程执行。

异步语法是一种编程语言的特性,允许程序在执行某些操作时不必等待其完成,而是可以继续执行其他操作。

Promise

Promise是一种用于处理异步操作的对象,可以将异

Linux系统之blockdev命令详解 blockdev 是一个用于调用块设备(ioctl)操作的命令行工具,它允许用户直接从命令行对块设备(如硬盘、USB驱动器等)执行各种低级别的操作。这括获取和设置设备参数,例如读取或设置设备的只读状态、刷新缓存、获取设备大小等。blockdev 对于系统管理员进行存储设备管理和故障排除特别有用。 阅读详情

相关推荐

Linux内核--文件系统()文件系统详解

现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使用。在 UNIX 系统中,操作系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等 I/O 操作设计了一组通用 API,使他们被处理时均可统一使用字节流方式。换言之,UNIX 系统中除进程之外的一切皆是文件,而 Linux 保持了这一特性。为了便于文件的管理,Linux 还引入了目录(有时亦被称为文件夹)这一概念。目录使文件可被分类管理,且目录的引入使 Linux文件系统形成一个层级结构的目

文艺小少年的博客 180

Linux0.11内核源码解析-block_dev.c

代码首先根据位置指针将其右移 BLOCK_SIZE_BITS 位,得到块号(block),然后使用与运算将其与 (BLOCK_SIZE-1) 进行按位与操作,以获取在块内的偏移量(offset)。使用 get_fs_byte 函数从用户空间的缓冲区(buf)逐个字符地读取数据,并将其写入内核空间的缓冲区(p)。更新位置指针(*pos)的值,增加已写入的字节数(written),减少待写入的字节数(count)。更新位置指针(*pos)的值,增加已读取的字节数(read),减少待读取的字节数(count)。

weixin_38452632的博客 897

linux 文件系统源码

这个是linux内核的文件系统的完整目录,其中含了VFS和linux支持的几十种文件系统的源码 ext2\ext3\fat32\mfs\nfs\ramfs\等文件系统

linux c访问文件系统,Linux内核源码分析--文件系统Block_dev.c)

block_dev.c程序是块设备文件数据访问操作程序,里面涉及到对块设备文件的读写函数。代码分析:由于是块设备的读写操作,所以每一次都是以块为单位(1024)进行操作;pos是文件的位置光标,用pos可以得到文件现在所处在哪块逻辑块上,并且在该逻辑块上偏移了多少。再根据块的大小 可以得到该逻辑块还剩下多少空间。最后跟需要写入的字符数比较,如果该逻辑块剩下的空间足够存放需要写入的字符,则读取该逻...

weixin_42560991的博客 377

文件系统() --block_dev.c file_dev.c char_dev.c源码分析

1.blk_dev.c 1 /*   2  *  linux/fs/block_dev.c   3  *   4  *  (C) 1991  Linus Torvalds   5  */   6   7 #include      9 #include  10 #include  11 #include  12 #include    14 int blo

wyc的专栏 1354

linux kernel源码之block_dev

源码: include/linux/fs.h fs/block_dev.c (blkdev.h是block层的头文件) 伪文件系统bdev linux kernel中在开机时注册并mount这个bdev文件系统linux kernel VFS中每个文件关联到一个inode,括设备文件。 bdev文件系统管理一系列块设备文件对应的inode。 bdev中管理的inode总是与一个block_device结构体绑定。 vdev中管理的inode保存了文件类型和设备号。 block_device block

power1952的专栏 1016

Linux-0.11 文件系统block_dev.c详解

Linux-0.11 文件系统block_dev.c详解

小x的博客 3732

linux之虚拟文件系统源码分析(详解)

文章目录前言基础知识VFS的数据结构正篇 前言 ​ 虚拟文件系统是一个很庞大的架构,如果要分析的面面俱到,会显得特别复杂而笨拙,让人看着看着,就不知所云了(当然主要还是笔者太菜),所以这篇博客,以open() 函数为切入点,来试着分析分析VFS文件系统的运转机理,本文的代码来源于 linux3.4.2 基础知识 首先我们来看一张图 ​ 从这张图中,我们可以看出,系统调用函数并不是直接操作真正的文件系统,而是通过一层中间层,也就是我们说的虚拟文件系统,为什么要有虚拟文件

KUNPLAYBOY的博客 3022

linux命令(二) blockdev命令

blockdev命令 blockdev命令可以获取linux下块设备的属性值,以及设置一些块设备的属性值。命令参数block -V 输出程序的版本号 blockdev --report [devices] 列举出devices设备信息。 如果没有devices,则输出所有操作系统发现的块设备。 blockdev [-v|-q] commands devices -v 命令设置后,后面的命令行参数执

pk_20140716的专栏 8442

linux 0.11 内核学习 -- block_dev.c

/* * 该文件的两个函数是为了向open和write函数提供接口,实现内核数据 * 和用户数据的交互 *//* *  linux/fs/block_dev.c * *  (C) 1991  Linus Torvalds */ #include  #include #include #include #include  /*

记录、分享 1368

linux内核源码分析文件系统篇一 (最浅显易懂的方式讲清楚文件系统总体流程)

尽量简练的说明白文件系统基本架构的运行原理。

bighomeman的博客 1430

Linux命令-blockdev命令(从命令行调用区块设备控制程序)

blockdev命令 在命令调用“ioxtls”函数,以实现对设备的控制。设备文件名:指定要操作的磁盘的设备文件名。

RisunJan的博客 1714

Linux 虚拟文件系统 VFS 源码剖析

fs_context 是 file_system_type 和 super_block 之间的桥梁,创建和配置 super_block 都离不开 fs_context,主要在 mount 调用时使用。Linux 中挂载的 super_block 除了链接到对应的 file_system_type::fs_supers 链表上,还将其链接到全局链表 super_blocks 中。mount_bdev() 和 kill_block_super() 两个函数都不是 ext4 专有函数,都是通用函数。

wmzjzwlzs的专栏 1550

blockdev命令 blkid命令 lsblk命令

blockdev命令  blkid命令  lsblk命令 http://www.jb51.net/LINUXjishu/310389.html block相关的命令   这篇文章主要介绍了Linux blockdev命令设置文件预读大小介绍,blockdev 工具允许从命令行调用区块设备控制程序,本文就讲解了它的使用实例,需要的朋友可以参考下 在命令行调用设备的ioctl函数。在Linu...

weixin_34296641的博客 435

Linux 内核源码分析---简单文件系统

学习笔记

学习记录 832

Linux blockdev 命令

Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。本文主要介绍Linux blockdev 命令。 原文地址:Linux blockdev 命令 ...

weixin_42098295的博客 390

Linux内核结构及源码概述

如果你是从源代码手动编译安装的软件,可执行文件通常都安装在/usr/local/bin目录下,除非配置时指定了其他位置。同样,源码也可以解压到自定义的路径下。要查看当前运行的Linux内核版本,可以使用uname -r命令。然后,根据内核版本去查找对应的源码路径。如果系统中没有预装源码,可以使用管理器来下载和安装对应的内核源码。此外,如果你想获取最新的内核源码或者特定版本的源码,还可以使用源码管理工具如git来克隆Linux内核源码仓库。

qq_28576837的博客 2587

linux源码阅读——虚拟文件系统实现(第一篇)

linux文件系统是使用面向对象的设计思想实现的,但是使用了C语言实现,然而,C语言不支持面向对象,所以文件系统主要是使用了结构体以及函数指针进行实现的。结构体就是对象,函数指针就是对象的成员变量。

qq_25447767的博客 219
下一篇: 鸿蒙OpenHarmony【多线程并发】 ArkTS并发
运器123
博客等级 码龄1年 149粉丝 · 48原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值