#ios #iphone #multithreading #nsthread #nsoperationqueue
#iOS #iPhone #многопоточность #nsthread #nsoperationqueue
Вопрос:
Я изучаю, как выполнять операции синхронизации и asyn. Пожалуйста, поправьте меня, что я упомянул / узнал, правильно:
-
операции синхронизации и asyn могут выполняться следующими способами (мы можем выбрать любой в соответствии с нашими требованиями)
- GCD
- NSThread
- NSOperationQueue -добавление NSOperation
2 . GCD — это C API, и поверх него написаны NSThread и NSOperationQueue, NSOperation
3 . NSOperation — это не что иное, как поток, в котором есть несколько задач. То же самое, что и main() — это поток. Если кто-то написал creating thread, что также означает создание пользовательской nsoperation
4 . NSConnectionurl, AFNetwork находятся поверх этих GCD, NSThread,NSOperationQueue, NSOperation
Ответ №1:
Пожалуйста, найдите мой встроенный ответ ниже.
1) операции синхронизации и asyn могут выполняться следующими способами (мы можем выбрать любой в соответствии с нашими требованиями)
GCD NSThread NSOperationQueue-добавление NSOperation
-
Ваше понимание правильное, за исключением некоторых изменений и добавления дополнительной информации в NSOperatonQueue.
-
Даже если реализация пользовательской операции является синхронной, добавление ее в очередь операций преобразует в асинхронную операцию.
-
И если пользовательская операция реализована синхронно, вызов метода start работает синхронно — он использует текущий поток для выполнения своей собственной задачи.
2 . GCD — это C API, и поверх него написаны NSThread и NSOperationQueue, NSOperation
- Насколько я понимаю, NSOperaton реализован поверх GCD, а не NSThread.
3 . NSOperation — это не что иное, как поток, в котором есть несколько задач. То же самое, что и main() — это поток. Если кто-то написал creating thread, что также означает создание пользовательской nsoperation
-
Пользовательская операция заключается в выполнении задач либо в собственном потоке, либо в отдельном потоке. Это зависит от пользовательской операции реализации.
а) Пользовательская операция, реализованная синхронно, т.е. Не создающая поток в методе start для вызова метода main. Он выполняет операционные задачи в текущем потоке, в котором был вызван метод запуска операции.
Но та же синхронная пользовательская операция, добавляя ее в очередь операций, выполняет свои задачи в отдельном потоке. Отдельный поток, созданный очередью операций.
б) Пользовательская операция реализуется асинхронным образом, т.Е. Выполняет свои задачи в отдельном потоке.
4 . NSConnectionurl, AFNetwork находятся поверх этих GCD, NSThread,NSOperationQueue, NSOperation
- Понятия не имею.