如何生成多个线程,以最快的速度处理并中止其余线程
本文关键字:线程 余线程 处理 何生成 速度 | 更新日期: 2023-09-27 18:20:05
假设有多种方法可以执行一个操作,并且每种方法的效率都任意提高。我想生成多个线程来完成一个操作,看看哪一个先完成。我该怎么做?我知道我会生成多个线程,但首先完成的线程必须向主线程返回一个值,这将不得不中止所有正在运行的线程。这是为了学习,所以我想了解如何使用线程和任务库来做到这一点。
- 让你所有的替代方式接受
CancellationToken
- 创建一个
CancellationTokenSource
,并将所有备选方法作为单独的Task
调用,将Token
传递给Task
和执行的方法 - 使用
Task.WaitAny(tasks)
或await Task.WhenAny(tasks)
等待最快的Task
完成。根据该调用的结果,您可以获得最快的Task
的结果 Cancel()
是取消令牌,用于通知剩余的Task
在方便时尽快停止