c#中的异步编程

异步编程in c#


为什么需要异步编程


问题一:

耗时的操作阻塞了UI线程,造成UI线程不能响应用户操作。

解决方案:

在发起耗时操作的请求之后要立即返回,不要阻塞UI线程,让UI线程可以继续响应用用户的操作。然后等耗时操作返回后,通过回调来处理耗时操作返回的结果。


问题二:

线程的创建和销毁是昂贵的,而服务器的资源是有限的。

解决方案:

为了创建高可伸缩性的服务,我们必须用最少的线程处理更多的请求。IO操作如数据库访问,磁盘操作,Socket访问不属于计算密集型操作,是不需要单独分配一个线程来处理的。


怎么选择:

计算密集型:

CPU是主要资源。这类应用无论怎样你都必须占用CPU时间,所以你可以通过创建后台线程的方式来实现异步。

IO密集型:

IO是主要瓶颈。这类应用实际上是不需要占用CPU的,使用异步IO(发起异步IO然后立即返回,当异步IO执行完毕后会通知你)将会对我们的应用的效率带来革命性的影响,因为IO相对于CPU来说是非常非常非常慢速的设备,我们甚至只需要很少的线程就可以处理很多的任务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值