У меня есть список / массив элементов, которые отображаются в UITableView.Каждый элемент содержит в себе конечный автомат, который выполняет некоторую асинхронную задачу с использованием механизма фьючерсов и обещаний, и его состояние отображается на соответствующем UITableViewCell.В настоящее время для одной модели это работает отлично.
Однако мне нужно сделать это как последовательность операций.Например, в массиве может быть 15 моделей, однако в определенный момент я смогу запустить только 3, после того, как одна из моделей завершится или произойдет сбой, я должен вручную запустить 4-ую модель, чтобы инициировать ее задачу.Примечание. Я не могу инициировать работу всех 15 моделей и просто жду обратного вызова, поскольку оно ограничено аппаратным обеспечением, и сразу приводит к сбою в этом сценарии.
Чтобы быть точным, если вышеприведенное не ясно, ниже приведены два примера: МойВид задачи в точности совпадает с функцией Обновить все в разделе Обновления на вкладке App Store в приложении iPhone.Если у вас есть 20 обновлений приложений и нажмите кнопку «Обновить все», это означает, что 17 приложений находятся в состоянии ожидания и загружают обновления только для 3 приложений в любой момент.После завершения обновления приложения оно переходит к следующему.Это точная копия моей постановки проблемы, но с небольшим поворотом.
Поворот: Мои операции связаны с аппаратным обеспечением через Bluetooth.Подумайте, у вас есть 20 носимых устройств, которые вы хотите настроить с записью некоторых данных через Bluetooth.Аппаратное ограничение: вы можете подключать до 3-4 устройств одновременно.Следовательно, как только устройство / периферийное устройство преуспевает или терпит неудачу с операцией, я должен попытаться соединить 4 один и так n так постепенно, пока все не будет сделано.Также есть функция повтора, которая ставит в очередь неудачную очередь.
Моя проблема в том, как мне структурировать, чтобы поддерживать это и отслеживать.У меня есть общее представление о параллелизме, но я не очень много работал над этим.Мое текущее чувство - использовать Очередь и счетчики, обернутые в классе Менеджера, для мониторинга состояний.Хотелось бы помочь, как подойти к этому.Также мне не нужен код, просто концептуальное решение для структуры данных.