Diferença entre operações e tópicos em Cocoa
-
06-07-2019 - |
Pergunta
Estou aprendendo Objective-C, I será o desenvolvimento de um aplicativo de processamento de vídeo.
Estou lendo o guia do desenvolvedor na maçã e eu corri para objetos de Operação. Eu só preciso de alguns esclarecimentos que a diferença entre as operações e tópicos, desvantagens, vantagens, casos de uso.
Pelo que li, a operação é mais alto nível de gerenciamento de processo / tarefa de aplicação. O NSOperationQueue pode lidar com recursos de operação e de concorrência.
O que eu não entendo é que a Operação pode ser executado diretamente em um segmento, eu não sou muito claro sobre este conceito. Eu não sou para limpar sobre a diferença entre operações e threads.
Por favor me fornecer o máximo de informações / base sobre os dois possível.
Muito obrigado a todos.
Solução
A diferença entre NSOperation
e tópicos é uma das abstração. Um segmento é um baixo nível (ao nível do sistema operativo) construo com o qual para executar múltiplos "threads" de código concorrentemente. Embora Cacau fornece a API NSThread
, é essencialmente um wrapper sobre a API pthread
s. NSOperation
é uma abstração de nível mais alto de uma tarefa que você deseja executar. NSOperationQueue
irá agendar a execução de uma fila de NSOperations
, de modo a maximamente utilizar o CPU disponível (s). Em um sistema multi-core, múltiplos NSOperations
será executado simultaneamente usando um pool de threads que NSOperationQueue
mantém. A vantagem de usar este API de nível superior é que ele permite que você pensa sobre as "operações" que deseja realizar ao invés de como programá-los. A desvantagem (e, portanto, a vantagem de utilizar directamente NSThread
) é que tem mais controlo sobre a programação da rosca e a comunicação entre o fio e outros segmentos (ver -[NSObject performSelector:withObject:onThread:]
). Para tarefas atômicas, tais como processamento de vídeo, NSOperation
é provavelmente o melhor ajuste.