Это общий вопрос «наилучшей практики».
Мне нужно получить несколько изображений с удаленного сервера и сохранить их в файловой системе моего приложения. Теперь я знаю, что есть несколько способов сделать это, но я пытаюсь выяснить, что является самым распространенным в наши дни.
Вообще говоря, я могу либо использовать асинхронный запрос, либо открыть другой поток и запустить синхронный запрос. На первый взгляд, оба будут работать. Но под капотом я хочу убедиться, что я использую свое оборудование как можно больше. В частности, будет ли запрос async автоматически использовать многоядерное аппаратное обеспечение, или он будет работать на основном потоке циклически.
Итак, что считается лучшей практикой здесь? Должен ли я использовать метод, который, как известно, быть asynced (например, NSURLSession «s dataTaskWithURL), или использование НОД и запустить синхронизированную NSData (contentsOfURL :) в другом потоке?iOS и Swift: Async vs sync в новом потоке для извлечения файлов с URL-адреса
ответ
Я на самом деле думаю, что это интересный вопрос.
На мой взгляд, оба они действительно эквивалентны производительности POV (хотя я, очевидно, не участвую в реализации NSURLSession, я бы предположил, что он использует GCD под капотом (или, может быть, NSOperationQueue
)).
NSURLSession
обеспечивает объектно-ориентированный и контролируемый способ взаимодействия с веб-контентом. GCD с NSData - гораздо более простая парадигма, но то, что вы получаете в простоте, теряете в управление.
Например, взять очки, сделанные here:
NSURLSession
высокий уровень API, чтобы сделать его легким для выполнения HTTP-запросов. Grand Central Dispatch (GCD) - это API параллелизма. Вы можете использовать GCD для достижения асинхронных вызовов, но затем вам необходимо выполнить все управление сетью вручную.
NSURLSession действительно имеет больше смысла. Большое спасибо! –
@DarkshoreGrouper, удовольствие! – Woodstock
- 1. iOS - Swift - sync и async
- 2. Узел async vs sync
- 3. nodeJS Async vs Sync
- 4. Node.js sync vs. async
- 5. Sync vs Async в DFP
- 6. AWS Lambda - sync vs async
- 7. Passport.js async vs sync deserialization
- 8. bcrypr Async vs Sync node.js
- 9. Async Action + Sync DBQuery VS sync Действие + Async DbQuery
- 10. async HttpWebRequest vs sync в многопоточном приложении
- 11. Mongodb Async vs Sync Java driver
- 12. python2.7 многопроцессорный пул async vs sync
- 13. Async EF 6 vs wrapped Sync EF
- 14. ASP.NET-идентификатор async vs sync issues
- 15. Grand Central Dispatch async vs sync
- 16. Spring RestTemplate - async vs sync restTemplate
- 17. Node.js: async callback vs sync callback vs process.nextTick vs setTimeout
- 18. разница между async + semphore vs sync queue
- 19. C# 4.5 просмотр файла с производительностью sync vs async
- 20. Log4J2 Mixed Async и Sync loggers
- 21. Разница SocketChannel.read() в режиме async и sync?
- 22. Ajax sync or async
- 23. erlang mix sync и async функции
- 24. Entity Framework 6: async, sync и транзакции
- 25. ios sync socket option
- 26. Swift Realm Write метод Sync или Async Thread
- 27. Async и sync javascript code in loop
- 28. Запуск Swift REPL для iOS vs OSX
- 29. Является Javascript forEach sync/async?
- 30. iOS Swift загрузка файлов
Я бы предположил, что в любом случае, возможно, хорошо. Таким образом, такая задача будет ограничена сетью, так что это не имеет большого значения в отношении многоядерных процессоров и т. Д. – Paulw11