什么是工作线程及其与我创建的线程的区别?

Tj.*_*Tj. 26 c# multithreading

我创建一个线程

Thread newThread= new Thread(DoSomeWork);

.
.
.
private void DoSomeWork()
{
}
Run Code Online (Sandbox Code Playgroud)

这与Worker线程有什么不同吗?如果它是..哪个更好,何时应该使用工作线程?我的应用程序需要有很多线程进行监控,刷新..

Pre*_*gha 26

通常,术语工作线程用于描述正在当前线程上执行工作的线程中的另一个线程 - 在许多情况下是前台线程或UI线程.然而,这不是一成不变的.

Windows程序通常使用单个线程来管理UI,这通常是同步的(即事情一个接一个地运行).如果要执行长时间运行的任务,那么为了避免在这些类型的程序中创建UI块,可以使用工作线程(可以是前台线程或后台线程)来完成工作(与主线程异步) ,然后将结果呈现给主要线程消耗.

在Windows程序中,这是通过消息完成的.如果使用特定的库(例如.net框架),则可以使用特殊的实用程序类(如ThreadPool和BackgroundWorker)来更轻松地处理后台或工作线程.但是,与往常一样,您可以使用平台原语来实现相同目的.


ama*_*tel 16

我试图以简单的方式解释这个概念,希望它有助于更​​好地理解工作线程概念.

一般定义: -

"工作线程"只是一个线程,它按照他的老板(我们可以称之为"客户端")的顺序执行一些后台工作,并将工作结果更新给老板.

技术定义: -

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

例1:

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

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

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

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

例2:

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

2-端口8080有一个请求.

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

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


vpr*_*m86 9

除了术语之外,我想不出太多的技术差异.

工人线程之所以这么称呼,是因为他们正在等待一些工作来完成工作,并在其他人分配时完成工作.例如,Web服务器进程接收请求并将其分配给其池中的线程进行处理.该线程服从该过程并完成工作并返回池.直到那时主线程将做其他事情.

出于您的目的:需要持续监视DB以识别更新/新值.它可以只是一个线程,总是在后台运行,定期唤醒并从DB更新UI中的值.