【问题标题】:Is it possible to have a cancellation token source that cancels only some waiters?是否有可能有一个取消令牌源只取消一些服务员?
【发布时间】:2014-09-03 19:20:59
【问题描述】:

给定:

  • BlockingCollection<T> coll
  • CancellationTokenSource cts
  • coll.GetConsumingEnumerable(cts.Token) 上阻塞了 10 个线程

所以cts.Cancel() 取消了所有 10 个线程。

是否可以编写一个自定义取消令牌源,可以告诉它只取消一些线程?所以:

cts.Cancel(5)

只会取消 5 个被阻塞的线程。任意 5 个。

?

【问题讨论】:

    标签: c# .net multithreading cancellation cancellationtokensource


    【解决方案1】:

    没有。您需要使用多个不同的取消令牌,让每个消费者使用自己的令牌,并取消一定数量的令牌集合。

    也就是说,您可以通过创建某种取消令牌集合来封装大部分这种行为,该集合具有生成新令牌的方法和另一个取消其发出的某些令牌的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-27
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      • 2018-01-04
      • 1970-01-01
      相关资源
      最近更新 更多