zoukankan      html  css  js  c++  java
  • net异步操作总结和比较


    以下是个人理解:

    Compute 主要指的是CPU密集型或者是其他计算密集型的操作

    I/O 这里指的是操作文件或者网络等适用的异步情况

    父子依赖指的是 一个任务是不是依赖于其他任务的状态而执行(例如A任务完成取消或者异常的时候 B任务执行)

    取消: 一个任务开始以后是否能够被终止

    等待:能否block住当前线程以等待异步操作的完成(是否有内置功能支持)

    超时:能否对异步任务设置超时时间

    返回值和异常:能否处理异步任务的返回值和异常(是否有内置功能支持)

    异步方式

    主要应用

    Emulate Secondary

    via What?

    父子依赖关系

    进度报告

    取消

    等待

    超时

    返回值和异常

     QueueUserWorkItem

    Compute

     Sync I/O

     NO

     NO

     NO

     NO

     NO

     NO

     Timer

    Compute

     Sync I/O

     NO

     NO

     Dispose 方法

     NO

     YES

     NO

     RegisterWaitForSingleObject

    Compute

      Sync I/O

     NO

     NO

     注销事件

     NO

     YES

     NO

     Tasks

    Compute

     Sync I/O 

    TaskComletionSource

    Task.Scheduler的 FromAsync

     YES

     NO

     应用于Compute的时候要早于Task启动或者Task支持取消方法

    应用于I/O:丢弃结果

     YES

     YES

     YES

     IAsyncResult

     I/O

     Delegate.BeginInvoke

     NO

     NO

     NO

     YES

     NO

     YES

     Event-Base

     I/O

     BackgroundWorker

     NO

     SOME

     有些类型支持丢弃结果

     NO

     NO

     YES

     AsyncEnumerator

     I/O

     Delegate.BeginInvoke

     NO

     NO

     YES

     NO

     YES

     YES

  • 相关阅读:
    使用mybetis插件的公共方法进行查询
    bootstrap的刷新和查询
    消息队列的使用和注意事项
    MySQL 日期时间计算函数
    mysql基础学习网站
    html装换成字符串的工具、代码辅助工具
    正则校验数字,数字保留两位小数,字母,特殊符号和数字
    HTML表格和表单
    HTML标签
    媒体查询写法
  • 原文地址:https://www.cnblogs.com/PurpleTide/p/1891968.html
Copyright © 2011-2022 走看看