什么时候在C#中使用线程池?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我一直在尝试在C#中学习多线程编程,我很困惑什么时候最好使用线程池,而不是创建自己的线程。一本书建议只使用线程池来处理小任务,但我似乎无法找到任何真正的指导方针。在做出这个编程决定时,你需要考虑什么?

提问于
用户回答回答于

如果你有大量需要持续处理的逻辑任务,并且希望并行完成,请使用池+调度程序。

如果你需要同时完成与IO相关的任务,例如从远程服务器或磁盘访问下载东西,但每隔几分钟需要做一次这样的事情,那么创建自己的线程并在完成后杀死它们。

关于一些考虑,我使用线程池进行数据库访问,物理/仿真,AI(游戏)以及在处理大量用户定义任务的虚拟机上运行的脚本化任务。

通常情况下,一个池由每个处理器2个线程组成(如今可能有4个),但是如果知道需要多少个线程,则可以设置所需的线程数量。

用户回答回答于

我建议你在C#中使用线程池的原因与任何其他语言相同。

当你想限制正在运行的线程数量或不想创建和销毁它们的开销时,请使用线程池。

通过小型任务,你阅读的书意味着使用寿命短的任务。如果创建一个只运行一秒的线程需要十秒钟的时间,那就是你应该使用池的一个地方(忽略我的实际数字,这是计数的比率)。

否则,你花大量的时间来创建和销毁线程,而不是简单地做他们打算做的工作。

扫码关注云+社区