在阅读 this 中线程池和任务的工作原理后文章我想到了这个问题 -
如果我有一个复杂的程序,其中一些模块使用tasks
,一些模块使用thread pool
,有没有可能因为用途不同会出现一些调度问题?
最佳答案
任务通常使用线程池来实现(当然也可以使用其他类型的调度程序来执行任务,这些调度程序提供不同的行为,但这是默认设置)。就实际执行的代码而言(假设您的任务代表正在运行的委托(delegate))确实没有太大区别。
任务只是围绕该线程池调用创建一个包装器,以便在收集有关该异步操作的信息和处理该异步操作的结果时提供额外的功能。如果您想利用该附加功能,请使用任务。如果在某些特定的上下文中不需要使用它,那么直接使用线程池也没有错。
混合两者,只要您从这些操作的结果中得到您想要的东西没有问题,就根本不是问题。
关于c# - 一起使用任务和线程池可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19729803/