专栏名称: dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux 主流平台
今天看啥  ›  专栏  ›  dotNET跨平台

解决new Thread().Start导致高并发CPU 100%的问题

dotNET跨平台  · 公众号  ·  · 2024-10-05 08:00
    

文章预览

背景 之前接手一个项目的时候,发现到处是 new Thread(()=>{ // do  something }).Start(); 这么做的目的,无非是为了减少页面等待时间提高用户体验,把一些浪费时间的操作放到新线程中在后台运行。 问题 但是这样带来的问题是大量的创建线程,非常影响项目的性能,尤其是在一些大并发量访问的时候,经常导致后果是cpu 100%。 当然,如果你的项目到处是这样写的,然后,没挂,至少说明这个方法没几个人再用。 解决方法 于是下意识的想着给项目优化下, 第一想法是走队列,但是发现项目压根没有使用队列,很多操作还停留在 有个任务表,有任务的时候,往里面加内容,然后有个定时任务,每分钟执行一次,定时的去消费任务; 于是想着怎么先最少的改动,先把问题解决,后面的事情在做考虑。 其实问题的本质是new 太多Thread了,那么最简单的方法 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览