zoukankan      html  css  js  c++  java
  • 对CancellationToken的简析

    最近在学习.NET中的线程同步。其中一个重要的技术叫线程的取消(中止),涉及的主要是一个叫CancellationToken的东西。

    通过学习,可以简单总结为:Token是一个令牌。当我们对Token执行Cancel()操作时,所有Token的宿主线程(或任务)都将收到取消通知,然后做出线程(或任务)中止执行的操作。

    使用CancellationToken的惯常方式如下:

    1. 先构造一个CancellationTokenSource实例,这相当于TraceSource,是令牌的生产工厂。CancellationTokenSource有一个属性Token,对应了CancellationToken,这是整个取消架构的核心。

    2. 通过设置Token属性的Register()方法,可以注册一个令牌取消后的回调方法。这个方法,在令牌收到取消请求(通知)时被调用。

    3. 在线程Start()、任务的TaskFactory、For循环,或其他能带入CancellationToken参数的创造并开启线程的方法中,把前述构造的TokenSource的Token属性返回的令牌对象作为参数传递进去,使该线程成为该Token的宿主之一。

    4. 在需要中止线程的时候,只需要调用TokenSource的Cancel()方法,即可向所有令牌发出取消通知,从而中止其宿主线程的执行。收到取消请求,至线程被中止,会有一定的时间延迟。

    转载请注明出处及作者,谢谢!
  • 相关阅读:
    VIM文本替换命令
    VIM格式化代码(How to format code with VIM)
    字符串匹配的Boyer-Moore算法
    Java中数组的遍历
    UVa10723
    uva242,Stamps and Envelope Size
    UVa1630,Folding
    uva1629,Cake Slicing,记忆化搜索
    uva 10118,记忆化搜索
    uva10003
  • 原文地址:https://www.cnblogs.com/Abbey/p/2174208.html
Copyright © 2011-2022 走看看