2009-06-22 9 views
0

J'apprends Objective-C, je vais développer une application de traitement vidéo. Je lis le guide du développeur sur apple et je suis tombé sur des objets Operation. J'ai juste besoin de quelques éclaircissements quelle est la différence entre les opérations & fils, désavantages, avantages, cas d'utilisation. D'après ce que j'ai lu, le fonctionnement est un niveau supérieur de gestion des processus/tâches d'application. NSOperationQueue peut gérer les ressources d'opération et la concurrence. Ce que je ne comprends pas, c'est que l'opération peut être exécutée directement dans un thread, je ne suis pas trop clair sur ce concept. Je ne suis pas à effacer sur la différence entre les opérations & discussions.Différence entre les opérations et les threads dans Cocoa

Veuillez me fournir autant d'informations/de contexte sur les deux que possible.

Merci beaucoup à tous.

Répondre

2

La différence entre NSOperation et les threads est l'un des abstraction. Un thread est une construction de bas niveau (au niveau du système d'exploitation) avec laquelle exécuter simultanément plusieurs "threads" de code. Bien que Cocoa fournisse l'API NSThread, il s'agit essentiellement d'un wrapper sur l'API pthread. NSOperation est une abstraction de plus haut niveau d'une tâche que vous souhaitez exécuter. NSOperationQueue planifiera l'exécution d'une file d'attente de NSOperations afin d'utiliser au maximum les CPU disponibles. Sur un système multicœur, plusieurs NSOperations seront exécutés simultanément à l'aide d'un pool de threads que gère NSOperationQueue. L'avantage de l'utilisation de cette API de niveau supérieur est qu'elle permet de penser aux "opérations" que vous souhaitez effectuer plutôt que de les planifier. L'inconvénient (et donc l'avantage d'utiliser NSThread directement) est que vous avez plus de contrôle sur la programmation du thread et la communication entre le thread et les autres threads (voir -[NSObject performSelector:withObject:onThread:]). Pour les tâches atomiques, telles que le traitement vidéo, NSOperation est probablement la meilleure solution.

+0

Merci Barry Mon programme est une application de test pour un plongeur vidéo. Il doit donc décoder le codec d'un fichier vidéo, le transmettre à l'application et l'afficher dans la fenêtre de l'application. Dans mon application, plusieurs images du fichier vidéo sont simultanément décodées et il n'y a aucune garantie que les trames de décodage seront affichées dans les commandes de trames de fichiers. Comme le cadre décodé est affiché sur l'écran dans ce que je suppose est un autre fil. À mon avis, devrais-je utiliser des fonctions de rappel, des threads ou des opérations? Parce que l'application a des tâches spécifiques, j'ai juste besoin de travailler sur l'opération. – ReachConnection

Questions connexes