C#多线程开发中如何释放使用中的资源
目前我根据一个用户表中的用户数目来开启多线程,即用一个循环来实现每有一个用户我就实例化出一个线程类似Threadthread=newThread(newThreadSta...
目前我根据一个用户表中的用户数目来开启多线程,即用一个循环来实现每有一个用户我就实例化出一个线程类似Thread thread = new Thread(new ThreadStart(delegate。。。)),而且我还得额外的开启一个定时器来实现定时刷新查看是否有新用户,如果有我还得继续去实例化线程,现在的问题是,我把程序放在服务器上面跑的时候,其上的任务管理器中的CPU一会儿就会处于100%状态并且居高不下,问题应该就是我没有及时的释放多线程开启的资源造成的,还请各位好心朋友帮助点醒一下,这儿感激不尽!
展开
1个回答
展开全部
Thread thread = new Thread(new ThreadStart(delegate。。。)) 你这写法是为一个用户开了2个线程了,=号左边第一个new Thread先开启1个线程,然后第二个new Thread又在这个线程里面又开启了一个线程,所以1个用户你开启了2个线程,而且因为你是在一个线程里面开启另一个线程,所以开启的第一个线程虽然是空的,但是在你开的第二个线程结束前是不会结束的,等于你每开一个用户线程就多开了1个额外的空线程.
更多追问追答
追问
那朋友你可有更好的解决办法?多线程这一块儿对我来说很陌生,现在的问题是我开启到三四十个线程的时候服务器中的任务管理器的CPU就已经占满了,导致任务处理严重受阻,还请你能给点指导,谢谢
追答
Thread thread = new ThreadStart(delegate。。。)就可以了啊,这样可以把线程数量减少1半。还有你可以使用线程池技术,这样系统会自动回收,分配线程。但是注意,每开启一个线程都会增加系统资源消耗,线程太多了,cpu终究会满的,尽量少开线程.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询