日期:2014-05-19  浏览次数:20971 次

请教C#中线程池
请大家帮忙解释下线程池
以及什么情况下使用

------解决方案--------------------
线程池用于多个相对比较简单的一次性执行的任务线程
值守线程或者需要同步的线程不适宜用线程池
用线程池可以省掉很多系统开销~
------解决方案--------------------
http://www.microsoft.com/china/MSDN/library/netFramework/netframework/NECLRT.mspx
------解决方案--------------------

原理很简单。事先开好的一堆线程,当然,这些线程都在睡眠中了。这一堆线程就叫线程池
然后当有需求的就拿出一个线程来用,用完后不退出,接着放回池子里去。

这样就避免了线程创建的开销,当有频繁的线程出现的时候对性能有比较大的好处。


------解决方案--------------------
线程池是静态的, 每个进程只有一个线程池
当线程数目超过了线程池的最大值时,后来的线程只能排队等待
------解决方案--------------------
http://topic.csdn.net/t/20061024/14/5105252.html
------解决方案--------------------
学习
------解决方案--------------------
线程池是静态的, 每个进程只有一个线程池
当线程数目超过了线程池的最大值时,后来的线程只能排队等待
对就这样.
------解决方案--------------------
我觉得一般是在需要控制流量的时候用,比如,由于资源的负载,最多只能同时运行3个线程.后来的只能等待
------解决方案--------------------
线程池是系统维护的一组线程,当没有任何任务调度时,其中的线程是空闲的,如果有一个任务,则系统会自动从线程池中取一个空闲的线程去执行这个任务,任务完成后,线程会重新返回到线程池。如果新任务来临而当前没有空闲线程,则系统会试图去创建一个新的线程。如果线程池当前已经达到了最大线程数目,那么你的任务将会被阻塞,直到一个线程空闲返回到线程池。

.net中线程池不对外直接暴露线程本身,而是通过线程池的静态方法向线程池注册任务,这些任务会被排队,直到他们被调度和返回。

大部分情况下,多线程的东西几乎都可以使用线程池实现。就像我上面说过的,线程池不会对你暴露线程本身。如果你希望要控制线程本身,则不能使用线程池。