【问题标题】:Does Worker Thread mean an instance of Thread classWorker Thread 是否意味着 Thread 类的实例
【发布时间】:2014-01-23 02:22:00
【问题描述】:

我了解 CLR 维护了两个线程池,即工作线程和 I/O 线程。不过看了下面这篇文章,我有点懵:http://nirajrules.wordpress.com/2009/09/28/net-worker-threads-io-threads-and-asynchronous-programming/

我与一位从未听说过 Worker Thread 一词的资深开发人员交谈过。我理解工作线程是主线程的同义词,例如当用户请求一个 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

因此我的问题是:Worker Thread 是 Thread 的同义词 (http://msdn.microsoft.com/en-us/library/system.threading.thread%28v=vs.110%29.aspx?) 还是表示主线程?

【问题讨论】:

标签: .net vb.net threadpool


【解决方案1】:

我知道这只是一种非常通俗(非技术)的方式来理解事物,但我发现它很容易理解工作线程的概念。

一般定义:-

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

技术定义:-

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

示例 1:

1- 我们有比萨店,那里有 10 位擅长准备美味比萨的人。这些被称为“工作线程”。

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

3- 当订单少于 10 个时,一些工人坐得非常理想。

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

示例 2:

1-有一个应用服务器监听8080端口。

2- 一个请求从 8080 端口进入。

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

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

【讨论】:

    【解决方案2】:

    据我了解,工作线程不是 UI 线程。它允许在不锁定用户界面 (UI) 的情况下运行代码。在 UI 线程上运行的任何代码都会强制 UI 变得无响应,直到代码完成。有一些解决方法(例如 Me.Update()),但好的做法通常是在非 UI 线程上运行任何需要超过一秒的时间。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多