Upload
cocoaheads-france
View
1.772
Download
0
Embed Size (px)
DESCRIPTION
Gérard Iglesias
Citation preview
Multi-ThreadingEt
Cocoa1ère Partie
Avant l’architecture
Plan
Motivation, le pourquoiPlan d’ensemble, le commentMise en oeuvre, l’enfer est dans le détailEt Cocoa dans tout ça...Avec une démo SVP
Motivation, le pourquoi
Système hôte et applicationArchitecture d’une application évènementielleLes limites, les problèmesPropositions
Système hôte et application
Un système qui est l'ordonnanceurDes applications avec leur propres espace mémoireUn système de communication inter-application
Architecture d’une application évènementielle
Une boucle infinieUn ensemble d’entrées sortiesDes Apis Graphiques ou autres
Architecture d’une application évènementielle
Une boucle infinieUn ensemble d’entrées sortiesDes mécanisme périodiques
Les limites, les problèmes
Une seule séquence d’instructionUne tâche à la foisLa roue colorée...
Propositions
Faire accomplir les tâches lourdes par des applications autres et communiquer avecDécouper les tâches en petites parties peu coûteusesPasser à autre chose... plus adapté au niveau de l’architecture applicative
Plan d’ensemble, le comment
Une application, plusieurs ThreadsUne illustration SVP
Une application, plusieurs threads
Une thread principale... le main()Plusieurs séquences de code simultanéesSauvegarde de contexte...
instruction couranteregistreset d’autres... trucs (google est votre ami)
IllustrationMémoire Code Pile Registres Code Pile Registres Code Pile Registres
Mise en oeuvre, l’enfer est dans le détail
Un seul espace mémoire à partagerGranularitéProtéger les donnéesCommunication entre les threads
Un seul espace mémoire à partager
Deux threads veulent accéder à la même valeur en mémoireVariables localesTLS : Thread Local StorageResources globales (fichiers, sous process, pipes, e/s ... )
Granularité
A quel moment une instruction est elle exécuté et interrompue ?a_ = b+c
Protéger les données
Section de code que l’on appelle critiqueInstruction atomique
Garantir qu’une opération de lecture ou d’écriture ne puisse être interrompue pour passer à un autre thread
Locks divers et variésConditions
Communication entre threads
Transmettre des résultatsTransmettre des ordres
Et Cocoa dans tout ça...
RunLoop & InputSourceNSLock & @synchronizedNSRecusiveLockNSConditionLock
RunLoop & InputSource
Une boucle infinie pour attendre que quelque chose se passe sans consommer de ressources CPU
Des points d’entrées pour indiquer qu’il y a quelque chose à faire...
E/S
Messages ObjC
Spécifiques
Timers
RunLoop & InputSource
Avec une démo SVP
La démo...