【发布时间】:2011-01-26 16:48:34
【问题描述】:
假设我已经在ThreadPool 中排队了一个工作项,但是如果没有要处理的数据(从BlockingQueue 读取),工作项就会阻塞。如果队列为空并且没有更多工作进入队列,那么如果我想中断阻塞任务,我必须调用Thread.Interrupt 方法,但是如何使用ThreadPool 做同样的事情?
代码可能如下所示:
void Run()
{
try
{
while(true)
{
blockingQueue.Dequeue();
doSomething();
}
}
finally
{
countDownLatch.Signal();
}
}
我知道在这种情况下最好的办法是使用常规的 Thread,但我想知道是否有 ThreadPool 等效的方式来中断工作项。
【问题讨论】:
标签: c# multithreading concurrency threadpool interrupt