Я работаю над симусом игры и хочу ускорить бит симуляции матча. В заданную дату могут быть более 50 совпадений, которые нужно имитировать. В настоящее время я прохожу через каждого и говорю им, чтобы имитировать себя, но это может продолжаться вечно. Я надеялся, чтоNSThreading for speed
1) Наложить на «занято» экран
2) Запуск потока для каждого
3) Когда последний поток завершает работу, снимите накладку.
Теперь я могу сделать 1 & 2, но я не могу понять, как сказать, когда последний поток закончен, потому что последний поток, который я отсоединяю, может быть не последним завершенным потоком. Каков наилучший способ сделать это?
Кроме того, обычно используются потоки, так что работа может выполняться в фоновом режиме, в то время как пользователь делает другие вещи, я использую его немного иначе. Мое приложение - это приложение с основными данными, и я хочу, чтобы пользователь не прикасался к магазину другими способами, пока я имитирую матчи. Поэтому я хочу использовать однопоточность большую часть времени, но затем многопоточность для этой ситуации из-за того, как долго движется Sim. Если у кого-то есть другие идеи для этого подхода, я открыт.
Роб
Вы можете использовать KVO для наблюдения за 'operationCount' рабочей очереди; не требуется опрос. Просто обратите внимание, что операция не будет работать в основном потоке, поэтому вы, вероятно, захотите сделать основной поток, выполняемый с вашего метода наблюдателя, на ваш фактический экстракт-new-operation-count-from-the-change- метод словаря и проверки. –
Вы также можете наблюдать свойство isFinished каждого NSOperation – sbooth
Или вы можете использовать оповещения, чтобы основной поток знал о завершении. –