Multi-Threading Et Cocoa

Preview:

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...

Recommended