Пропустить новые задачи, если очередь не пуста. стриж - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть фрагмент кода, который спамит длительные задачи 5-6 раз в секунду. Каждая задача занимает некоторое время, чтобы закончить. Я хочу игнорировать все остальные задачи, пока выполняется 1. После того, как это заканчивается, новый должен занять свое место.

В Swift 4.2 используется несколько инструментов для параллелизма. Что будет работать лучше?

1 Ответ

0 голосов
/ 12 ноября 2018

Для решения этой проблемы вы можете использовать GCD или Operation . В случае, если вы описали, я бы использовал Операция . Используя этот подход, вы можете иметь немного более удобный для пользователя контроль над Операцией , которая выполняется (остановка, отмена ....).

Маленький пример:

let queue  = OperationQueue()
queue.maxConcurrentOperationCount = 1

queue.addOperation { print("?") }
queue.addOperation { print("?") }
queue.addOperation { print("?") }

В этом случае операции выполняются одна за другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...