【发布时间】:2013-06-18 09:52:04
【问题描述】:
在C#中,我们可以如下创建线程
System.Threading.Thread thd1 = new System.Threading.Thread(new System.Threading.ThreadStart(DoWork));
thd1.Start();
System.Threading.Thread thd2 = new System.Threading.Thread(new System.Threading.ThreadStart(DoWork));
thd2.Start();
thd1.Join();
thd2.Join();
如果不使用上面的语句,我们如何使用 ThreadPool 类似地管理线程?
【问题讨论】:
-
是C#相关的问题吗?
-
是的。它是在 c# 中完成的。它可能有许多程序并行运行;所以如果可能的话,我想使用线程池而不是管理单个线程。
-
那么,使用 ThreadPool 类,QueueUserWorkItem 方法。或者更有效的是,使用 Task 或 BackgroundWorker 类。否则非常不清楚您要“管理”什么。
-
谢谢。但是如果我调用 QueueUserWorkItem 方法,线程将如何启动?我们如何指定优先级、加入等?线程会自行启动和加入吗?
-
线程“启动”是因为 QueueUserWorkItem() 调用向它们发出信号。永远循环等待操作的线程不需要 Join()。优先事项?如果您需要排队的任务具有不同的优先级,我不确定 BlockingCollection 中是否有可用的优先级阻塞队列 - 您可能必须滚动自己的线程池才能做到这一点。
标签: c# multithreading threadpool