异步处理

异步处理通过拆分任务,避免等待I/O操作,提高处理器利用率,减少任务完成时间。常见的实现方式包括多进程、多线程等。异步处理的两种表达形式为嵌套表达和顺序表达,但嵌套表达可能导致代码可读性下降。同时,处理非阻塞问题至关重要,以防止软件应用因长时间计算或死循环而卡住。

异步指一个执行中的任务,拆开成多个子任务各自执行。异步与同步处理相对,同步指多个执行中的子任务,等待所有子任务执行完再继续执行。异步的作用是使有I/O操作的任务最大化利用处理器的计算,以达到缩短任务的完成时间。

异步可以用多进程、多线程或其它技术实现,常见实现技术有:

语言异步技术多异步依赖顺序表达返回值函数表达返回值直接表达处理非阻塞
javascriptsetTimeout/setInterval
异步请求
Promise
generator
async/await
web worker




















javaThread
Executor




C#Thread
Task
async/await








多异步依赖顺序表达,指后一个异步处理需要前一个异步处理的返回值作为参数,这种多异步依赖有两种表达,一种是嵌套表达,一种是顺序表达。

嵌套表达:

myAsyncMethod1().then(function(result1){
    myAsyncMethod2(result1).then(function(result2){
        console.log(result2);
    })
})

嵌套表达会造成异步嵌套地狱的现象,即形容代码可读性很混乱。

顺序表达:

var result1 = await myAsyncMethod1();
var result2 = await myAsyncMethod2(result1);
console.log(result2);

返回值函数表达,指返回值通过函数的参数返回,如:

myAsyncMethod1().then(function(result1){
    console.log(result1);
})

返回值直接表达,指返回值通过赋值表达式直接表达,如:

var result1 = await myAsyncMethod1();
console.log(result1);

处理非阻塞,指处理过程中,是否会占用处理,而无法处理其它任务。阻塞表现在假如异步中有死循环或计算量需要很长时间,软件应用的显示画面卡住无法展示新的内容以及无法操作。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值