我正在開發一款遊戲模擬器,並希望加快模擬比賽的速度。在給定的日期可能有50多場比賽需要模擬。目前我通過每個循環,並告訴他們模擬自己,但這可能需要永遠。我希望NSThreading的速度
1)疊加一個「忙」屏幕
2)啓動一個線程每個
3)當最後一個線程退出,取下覆蓋。
現在我可以做1 & 2,但我不知道如何判斷最後一個線程何時完成,因爲我分離的最後一個線程可能不是最後一個線程完成。什麼是最好的方式來做到這一點?
此外,通常使用線程,以便在用戶做其他事情時可以在後臺完成工作,我使用它稍有不同。我的應用程序是一款核心數據應用程序,我希望避免用戶在模擬比賽時以其他方式觸摸商店。所以我大部分時間都想單線程,但是由於sim引擎需要多長時間,因此需要多線程來處理這種情況。如果有人對這種方法有其他想法,我是開放的。
羅布
您可以使用KVO來觀察操作隊列的'operationCount';不需要輪詢。請注意,該操作不會在主線程中出現,因此您可能需要從觀察者方法執行主線程執行,然後執行您的實際提取 - 新操作 - 從更改 - 字典和檢查它的方法。 – 2010-09-06 18:56:29
您也可以觀察每個NSOperation的isFinished屬性 – sbooth 2010-09-07 04:57:55
或者您可以使用通知讓主線程知道完成情況。 – 2012-04-13 20:32:06