понимание операций синхронизации и asyn

#ios #iphone #multithreading #nsthread #nsoperationqueue

#iOS #iPhone #многопоточность #nsthread #nsoperationqueue

Вопрос:

Я изучаю, как выполнять операции синхронизации и asyn. Пожалуйста, поправьте меня, что я упомянул / узнал, правильно:

  1. операции синхронизации и 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

  • Понятия не имею.