20
Multi-Threading Et Cocoa 1ère Partie Avant l’architecture

Multi-Threading Et Cocoa

Embed Size (px)

DESCRIPTION

Gérard Iglesias

Citation preview

Page 1: Multi-Threading Et Cocoa

Multi-ThreadingEt

Cocoa1ère Partie

Avant l’architecture

Page 2: Multi-Threading Et Cocoa

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

Motivation, le pourquoi

Système hôte et applicationArchitecture d’une application évènementielleLes limites, les problèmesPropositions

Page 4: Multi-Threading Et Cocoa

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

Architecture d’une application évènementielle

Une boucle infinieUn ensemble d’entrées sortiesDes Apis Graphiques ou autres

Page 6: Multi-Threading Et Cocoa

Architecture d’une application évènementielle

Une boucle infinieUn ensemble d’entrées sortiesDes mécanisme périodiques

Page 7: Multi-Threading Et Cocoa

Les limites, les problèmes

Une seule séquence d’instructionUne tâche à la foisLa roue colorée...

Page 8: Multi-Threading Et Cocoa

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

Plan d’ensemble, le comment

Une application, plusieurs ThreadsUne illustration SVP

Page 10: Multi-Threading Et Cocoa

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

IllustrationMémoire Code Pile Registres Code Pile Registres Code Pile Registres

Page 12: Multi-Threading Et Cocoa

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

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

Granularité

A quel moment une instruction est elle exécuté et interrompue ?a_ = b+c

Page 15: Multi-Threading Et Cocoa

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

Communication entre threads

Transmettre des résultatsTransmettre des ordres

Page 17: Multi-Threading Et Cocoa

Et Cocoa dans tout ça...

RunLoop & InputSourceNSLock & @synchronizedNSRecusiveLockNSConditionLock

Page 18: Multi-Threading Et Cocoa

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

RunLoop & InputSource

Page 20: Multi-Threading Et Cocoa

Avec une démo SVP

La démo...