Multi-Threading Et Cocoa
-
Upload
cocoaheads-france -
Category
Technology
-
view
1.772 -
download
0
description
Transcript of Multi-Threading Et Cocoa
![Page 1: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/1.jpg)
Multi-ThreadingEt
Cocoa1ère Partie
Avant l’architecture
![Page 2: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/2.jpg)
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
![Page 3: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/3.jpg)
Motivation, le pourquoi
Système hôte et applicationArchitecture d’une application évènementielleLes limites, les problèmesPropositions
![Page 4: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/4.jpg)
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
![Page 5: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/5.jpg)
Architecture d’une application évènementielle
Une boucle infinieUn ensemble d’entrées sortiesDes Apis Graphiques ou autres
![Page 6: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/6.jpg)
Architecture d’une application évènementielle
Une boucle infinieUn ensemble d’entrées sortiesDes mécanisme périodiques
![Page 7: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/7.jpg)
Les limites, les problèmes
Une seule séquence d’instructionUne tâche à la foisLa roue colorée...
![Page 8: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/8.jpg)
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
![Page 9: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/9.jpg)
Plan d’ensemble, le comment
Une application, plusieurs ThreadsUne illustration SVP
![Page 10: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/10.jpg)
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)
![Page 11: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/11.jpg)
IllustrationMémoire Code Pile Registres Code Pile Registres Code Pile Registres
![Page 12: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/12.jpg)
Mise en oeuvre, l’enfer est dans le détail
Un seul espace mémoire à partagerGranularitéProtéger les donnéesCommunication entre les threads
![Page 13: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/13.jpg)
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 ... )
![Page 14: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/14.jpg)
Granularité
A quel moment une instruction est elle exécuté et interrompue ?a_ = b+c
![Page 15: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/15.jpg)
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
![Page 16: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/16.jpg)
Communication entre threads
Transmettre des résultatsTransmettre des ordres
![Page 17: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/17.jpg)
Et Cocoa dans tout ça...
RunLoop & InputSourceNSLock & @synchronizedNSRecusiveLockNSConditionLock
![Page 18: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/18.jpg)
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
![Page 19: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/19.jpg)
RunLoop & InputSource
![Page 20: Multi-Threading Et Cocoa](https://reader035.fdocuments.fr/reader035/viewer/2022081519/55890b18d8b42abc218b4661/html5/thumbnails/20.jpg)
Avec une démo SVP
La démo...