C#中Thread、Task、ThreadPool使用场景

1,Thread线程

  • 线程开销大,占用大量内存,创建和销毁会花费不少时间。
  • 使用场景:当程序中需要一个长时间运行的逻辑,比如while循环监听IO,大量数据计算等

2,ThreadPool线程池

  • 线程池没有返回值、无法探知执行的方法什么时候完成。
  • CLR(公共语言运行时)管理自己的线程池(ThreadPool)
  • CLR初始化时,线程池中没有线程;通过操作请求队列,派发给线程池中的线程执行;如果线程池没有线程,就新建一个线程。任务完成后,线程返回线程池,等待响应其他请求。
  • 当一个线程池内的线程空闲一段时间(CLR对该时间定义),该线程会自动销毁并释放资源。
  • 使用场景:ThreadPool.QueueUserWorkItem(),当程序中执行耗时的、不连续动作的、不需要返回值的逻辑,比如保存Excel、CSV、Wrold数据到本地等。

3,Task任务

  • 执行完成后有返回值,Task、Task<TResult~>;可中途取消任务
  • Task也基于线程池
  • 使用场景:并发、异步编程等

参考资料:CLR Via C#

posted @   新凉别处暑  阅读(341)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示