4
我正在使用的應用程序使用線程池。這是基本的僞代碼。使用線程池的後臺線程異常處理
在主線程
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」 將利用基本上返回CLR對象收率回報。該對象需要由線程上的兩個其他組件處理。所以我們調用提供回調方法的線程池(這將調用這兩個組件)。
如果在產生的線程上有一個異常,需要通知父線程,以便它可以跳出for循環(即停止產生更多的線程),等待產生的線程完成,然後處理異常。
根據我的閱讀,其中一種方法是在主線程上有一個「標誌」變量。如果產生的線程有異常,線程將使用鎖定機制設置變量。父線程會在產生新線程之前檢查「標誌」變量。
我想知道是否有更好的方法來處理這種情況。正在使用線程池,因爲如果「for」循環產生比線程池限制多的線程,它將管理線程隊列。