我正在处理的应用程序使用线程池。这是基本的伪代码。
在主线程上
foreach(Object obj in Component.GetObject())
{
//Invoke the thread pool providing the call back (method to be called on the background// thread) and pass the object as the parameter.
}
//Wait for the threads to complete.
“Component.GetObject”基本上会使用 Yield 返回一个 CLR 对象。该对象需要由线程上的其他两个组件处理。所以我们正在调用提供回调方法的线程池(这将调用两个组件)。
如果派生线程发生异常,则需要通知父线程,以便它可以跳出for循环(即停止派生更多线程),等待派生线程完成然后处理异常。
根据我的阅读,其中一种方法是在主线程上有一个“标志”变量。如果生成的线程出现异常,该线程将使用锁定机制设置变量。父线程会在产生新线程之前检查“标志”变量。
我想知道是否有更好的方法来处理这种情况。正在使用线程池,因为如果“for”循环产生的线程多于线程池限制,它会管理线程的排队。