13
看看并发分析器,线程视图看起来我的应用程序产生的远远超过我想象的线程数。其中大部分是“CLR工作线程”或“工作线程”。CLR Worker线程和Worker线程有什么区别?
有什么区别?在什么情况下创建?
看看并发分析器,线程视图看起来我的应用程序产生的远远超过我想象的线程数。其中大部分是“CLR工作线程”或“工作线程”。CLR Worker线程和Worker线程有什么区别?
有什么区别?在什么情况下创建?
并发可视化是一个相当新的,但真的很酷!功能所以有一点(我相信至今)的信息,关于它,下面就是我在官方信息来源已经找到像MSDN:
相关链接创建的工作线程:
下不会对CLR创造什么情况下线程?这些是由[ThreadPool](http://msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx)创建的线程吗? 给出你的答案,我也被神奇的工人主题数量弄糊涂了,我不明白我怎么能创造这么多。 – pomeroy
真的很难说没有任何看你的应用程序代码。 CLR可以为应用程序线程创建用于垃圾收集的CLR工作程序,同样这只是猜测,但假定应用程序使用线程池,那么存在很好的文档化行为 - “如果应用程序将线程池的任务排队得比一个线程更快处理它,那么线程池将创建额外的线程“,和”关于线程池的好处是它是启发式的,如果你的应用程序需要执行很多任务,那么线程池会创建更多的线程。 – sll
查看屏幕截图,您只有一个活动的应用程序线程(主线程除外),它在时间线图上为紫色,表示它涉及I/O操作(您正在读取文件/网络流,io端口或类似内容),全部其他线程被阻止同步。我不知道为什么你有很多阻塞的工作线程,你是否在一些同步循环中创建线程? – sll