Worker Thread是否表示Thread类的实例

时间:2014-01-05 18:01:29

标签: .net vb.net threadpool

据我所知,CLR维护了两个线程池,即工作线程和I / O线程。但是,在阅读以下文章后,我有点困惑:http://nirajrules.wordpress.com/2009/09/28/net-worker-threads-io-threads-and-asynchronous-programming/

我与一位从未听过“工人线程”一词的高级开发人员交谈过。我理解工作者线程是主线程的同义词,例如当用户请求ASP.NET网页时,则创建工作线程。因此,如果20个用户同时访问该网站,那么将有20个活动的工作线程。如果20个用户访问了创建三个线程(http://msdn.microsoft.com/en-us/library/system.threading.thread%28v=vs.110%29.aspx)的多线程应用程序,那么会有60个活动线程吗?但是经过一些进一步的研究后我发现:

1) Worker Thread is synonymous to Background Worker (not main thread)
2) The term Worker Thread means nothing to some people

因此,我的问题是:工作线程是否与线程(http://msdn.microsoft.com/en-us/library/system.threading.thread%28v=vs.110%29.aspx?)同义或者它是否意味着主线程?

2 个答案:

答案 0 :(得分:1)

我知道这只是一种非常外行(非技术性)理解事物的方式,但我发现理解工作线程的概念非常简单。

一般定义: -

“工作线程”只是一个线程,它按照老板的命令(我们可以称之为“客户端”)执行一些后台工作,并将工作结果更新给老板。

技术定义: -

工作线程通常被定义为在客户端请求上激活的线程。

示例1:

1-我们有披萨店,那里有10个专家准备美味比萨饼的人。这些被称为"工作线程"。

2-我们有一个人接到客户的订单。那个人被称为“客户”。每当新订单到来时,其中一个工作线程"开始准备比萨饼,并在披萨准备好后更新给客户。

3-当订单少于10个时,一些工人只是理想的。

4-当订单超过10个时,订单只会进入等待队列。

示例2:

1-有一个应用服务器侦听端口8080.

2-端口8080上有一个请求。

3-一个侦听器线程(它被称为“客户端”)接受该请求并将其分派给完成请求的“工作线程”。实际上在应用服务器上维护了一个“工作线程”池(“工作线程”程序的许多对象)。

4-如果两个请求同时进入,则分配两个工作线程并同时执行任务。

答案 1 :(得分:0)

根据我的理解,工作线程不是UI线程。它允许在不锁定用户界面(UI)的情况下运行代码。在UI线程上运行的任何代码都会强制UI在代码完成之前无响应。有一些解决方法(例如Me.Update()),但良好的做法通常是运行在非UI线程上花费超过一秒的任何东西。

工作线程和线程之间的一个可能区别是,线程在完成UI线程时不一定会报告它的进度或报告。我希望这会有所帮助。