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

  • 相关阅读:
    1442. Count Triplets That Can Form Two Arrays of Equal XOR
    1441. Build an Array With Stack Operations
    312. Burst Balloons
    367. Valid Perfect Square
    307. Range Sum Query
    1232. Check If It Is a Straight Line
    993. Cousins in Binary Tree
    1436. Destination City
    476. Number Complement
    383. Ransom Note
  • 原文地址:https://www.cnblogs.com/PurpleTide/p/1891968.html
Copyright © 2011-2022 走看看