如何生成多个线程,以最快的速度处理并中止其余线程

本文关键字:线程 余线程 处理 何生成 速度 | 更新日期: 2023-09-27 18:20:05

假设有多种方法可以执行一个操作,并且每种方法的效率都任意提高。我想生成多个线程来完成一个操作,看看哪一个先完成。我该怎么做?我知道我会生成多个线程,但首先完成的线程必须向主线程返回一个值,这将不得不中止所有正在运行的线程。这是为了学习,所以我想了解如何使用线程和任务库来做到这一点。

如何生成多个线程,以最快的速度处理并中止其余线程

  1. 让你所有的替代方式接受CancellationToken
  2. 创建一个CancellationTokenSource,并将所有备选方法作为单独的Task调用,将Token传递给Task和执行的方法
  3. 使用Task.WaitAny(tasks)await Task.WhenAny(tasks)等待最快的Task完成。根据该调用的结果,您可以获得最快的Task的结果
  4. Cancel()是取消令牌,用于通知剩余的Task在方便时尽快停止