Краткий ответ: Вы не можете достичь этого, используя NSThread
(или GCD)
Более длинный ответ: тип Objective C NSArray
не является поточно-ориентированным и не поддерживает одновременное обновление. В то время как вы можете обернуть NSArray
в поточно-ориентированную оболочку, чтобы ее можно было безопасно обновлять более чем одним потоком, такая оболочка могла бы добиться этого путем сериализации обновлений - так что вы не экономите время (и фактически тратите часть на та нить безопасная обертка).
Возможно, вы имели в виду что-то другое: если это не добавление элементов в массив, которые вы хотите перекрывать, а генерация этих элементов перед добавлением, вы можете сделать это с помощью NSThread
или GCD . вы также оборачиваете NSArray
в потокобезопасную оболочку.
Текущий рекомендуемый способ выполнять параллельные операции - использовать GCD, иначе Dispatch. Если вы прочитаете об этом, вы найдете, как сделать массив потокобезопасным, используя последовательную очередь и барьерные операции, и как запустить ваши 4 задачи, используя параллельную очередь.
НТН