Faculté I&C, Claude Petitpierre, André Maurer Le parallélisme Introduction.

Slides:



Advertisements
Présentations similaires
PHP5 its a kind of magic. Chargement automatique function __autoload( $nom_classe ) { require_once('obj/'.$nom_classe.'.class.php'); } si on exécute le.
Advertisements

Séparation des préoccupations (c) 2004, Audrey Occello, LF8 MOC Seconde partie Un exemple de programmation orientée Aspect avec AspectJ.
Plan du cours 5:Threads introduction Définition Création des Threads
Liste générique dans Linux 2.6 Source : Understanding the Linux kernel Chap3 processes p.87.
PHP5 its a kind of magic. Chargement automatique function __autoload( $nom_classe ) { require_once('obj/'.$nom_classe.'.class.php'); } si on exécute le.
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Threads Module Java Expert.
- DESS IGSI – Conception objet des SI -Etude de cas – Marie-Laure POITOU.
Problèmes de distribution, problèmes de partage.
Windows XP Professionnel
Le certificat dinformatique médicale de la maîtrise des sciences biologiques et médicales F. KOHLER Nancy C. Quantin Dijon P. Meyer Strasbourg.
UE Informatique graphique appliquée à la Biochimie – Licence de Biochimie 1 G. Deléage UE Informatique Graphique en Biochimie (UE Biochimie.
Quelles tâches, activités, projets, impliquant les mathématiques, conserver ou proposer en AP ? Un exemple autour de la recherche dune question ouverte.
Recherche d'un dossier patient
Introduction – Le bureau La visualisation des dossiers et des fichiers La gestion des dossiers et des fichiers Création dun nouveau dossier (méthode 1)
Les entrées /sorties en Java François Bonneville
Ecole de Chirurgie Faculté de Médecine de Nancy
APPLICATION FORMATION Guide dutilisation du Responsable Administratif APPLICATION FORMATION Guide dutilisation du Responsable Administratif 1.Accès p.
Une fraction est un nombre rationnel qui représente une partie dun tout.Elle sexprime sous la forme a b a correspond au numérateur et à la partie b correspond.
Mise en commun des savoirs antérieurs sur les autochtones Activité de lecture Manuel p LA CONCEPTION DU MONDE.
ORGANISER des Journées Scientifiques A LA SFA Organisation via le secrétariat de la SFA : Evelyne Dewayse soccupe du site web la création du formulaire.
Connexion base de données
Faculté I&C, Claude Petitpierre, André Maurer Bases de données Javascript – SQL - LemanOS.
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
Faculté I&C, Claude Petitpierre, André Maurer 1 Systèmes multi-processus C. Petitpierre
Faculté I&C, Claude Petitpierre, André Maurer 1 Héritage par prototype Héritage dattributs ou de méthodes Héritage de constructeurs.
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
Javascript les spécificités du langage - Partie 3 -
Javascript les spécificités du langage - Partie 6 -
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 La Concurrence Déclarative Peter Van Roy Département dIngénierie Informatique, UCL
Mise en œuvre du langage MDX - 1 ère partie- Présentation de lexemple et des outils utilisés -1-
Faculté I&C, Claude Petitpierre, André Maurer What is this ? (Quest ce que this ?)
Faculté I&C, Claude Petitpierre, André Maurer Les objets Introduction.
Présentation de la séquence de cours sur les interactions HTML-javascript Laure Walser, 11 juin 2010.
Cours du 19 octobre. POO-L3 H. Fauconnier2 E) Constructeurs et héritage Le constructeurs ne sont pas des méthodes comme les autres: le redéfinition na.
Faculté I&C, Claude Petitpierre, André Maurer setTimeout ( nomDeFonction, 1000 ) setTimeout ( instructions, 1000 ) setTimeout ( nomDeFonction(), 1000 )
Objets Javascript Mécanismes internes Le concept et la construction dobjets
La programmation objet Illustration de la POO en Pascal
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Faculté I&C, Claude Petitpierre, André Maurer 1 JavaCC Java compilers compiler (version générant du Javascript)
Faculté I&C, Claude Petitpierre Cascaded style sheets CSS.
Le patron de conception « Strategy » Simon Durocher ( )
Programmation par Objets et Java
Algorithme et programmation
Introduction à la génomique structurelle
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
JUnit Présentation complète de JUnit et « guide d’utilisation » en 13 transparents.
Programmation concurrente
Faculté I&C, Claude Petitpierre, André Maurer 1 Concepts dhéritage Héritage dimplémentation hasA Héritage de spécialisation isA.
Faculté I&C, Claude Petitpierre, André Maurer Gestion des fichiers de LemanOS Ne fonctionne que sous LemanOS. On peut voir les fichiers créés dans ce système.
Multi-Thread Jian-Yun Nie
Java Swing.
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
CSI1502 Principes fondamentaux en conception des logiciels Chapter 8: Gestion des exceptions.
CSI2520 Le langage Scheme (2) Un langage de programmation fonctionnelle.
Android UIThread, Thread, Handler et AsyncTask
Fabienne Boyer Laboratoire LIG (INRIA-UJF-INPG) Projet SARDES, INRIA Rhône-Alpes Usage.
Faculté I&C, Claude Petitpierre, André Maurer Le parallélisme Introduction.
Implémentation Ada Gestion de la mémoire. Put 20 L'affectation de Comptes (σ-modèle) La sémantique intuitive des comptes ne laisse guère de place à l'affectation.
JavaScript Nécessaire Web.
11/04/ L'héritage Cours 7 Cours 7.
Résumé des concepts liés aux objets C. Petitpierre, EPFL.
PHP 7° PARTIE : PROGRAMMATION OBJET
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Asynchronous JavaScript And XML AJAX C. Petitpierre
Modules créés au moyen d’objets C. Petitpierre. Objets construits sans constructeurs ( en Java on a introduit la réflexion pour cela ) var obj1 = { }
Pas de variable globale
Les notions de classe et d'objet
Transcription de la présentation:

Faculté I&C, Claude Petitpierre, André Maurer Le parallélisme Introduction

Faculté I&C, Claude Petitpierre, André Maurer Evénement chaînés onload="f()" f() { } setTimeout(f, 100) f() { } setTimeout(f, 100) f() { } setTimeout(f, 100)

Faculté I&C, Claude Petitpierre, André Maurer Evénement chaînés ( setInterval() ) onload="setInterval(f, 100)" f() { } } }

Faculté I&C, Claude Petitpierre, André Maurer this.f ? On ne peut pas chaîner les méthodes dun objet de la même façon obj = { f : function() { } x : 15 } setTimeout(this.f, 100) f() { } this.x ? moteur setTimeout(this.f, 100) this.x Possible this est perdu !

Faculté I&C, Claude Petitpierre, André Maurer Closures Le chaînage des appels doit être fait par closure ! Une closure = une fonction + attributs + son environnement de variables locales Toute fonction définie à lintérieur dune autre fonction produit en fait une closure Sorte de mini-objet

Faculté I&C, Claude Petitpierre, André Maurer Closure var x = null function createClosure (arg) { var vLocale = 10 x = function uneClosure(a) { // fonction définie dans alert(vLocale + a + arg) // une autre fonction }... createClosure(45) x(22)

Faculté I&C, Claude Petitpierre, André Maurer Closure Autre façon dy accéder function createClosure (arg) { var vLocale = 10 return function uneClosure(a) { alert(vLocale + a + arg) }... var x = createClosure(45) x(22)

Faculté I&C, Claude Petitpierre, André Maurer Closure function createClosure (arg) { var vLocale = 10 return function uneClosure(a) { alert(vLocale + a + arg) } 1.Même après la fin de createClosure, lenvironnement contenant les variables locales de cette fonction sont gardées et restent accessibles dans la fonction uneClosure. 2.Si lon crée deux closures dans la même fonction (même appel), elles partagent le même environnement (qui est celui de la fonction englobante) 3.Si la fonction est définie dans un objet, les attributs de l'objet font partie de la closure

Faculté I&C, Claude Petitpierre, André Maurer Closure dans un appel à setTimeout function createClosure (arg) { var vLocale = 10 setTimeout( function uneClosure() { alert(vLocale + arg) }, 1000) }

Faculté I&C, Claude Petitpierre, André Maurer Closure dans un appel à setTimeout function createClosure (arg) { var vLocale = 10 function xxx() { alert(vLocale + arg) } setTimeout( xxx, 1000) }

Faculté I&C, Claude Petitpierre, André Maurer Animation dans un objet var activeObj = { couleur : "green" run1 : function() { alterneCouleur(this.couleur) var that = this // that est un nom arbitraire clos = function() { that.run2() } setTimeout( clos, 500 ) }, run2 : function() { alterneCouleur("red") var that = this setTimeout( function() { that.run1() }, 500 )}

Faculté I&C, Claude Petitpierre, André Maurer Une autre possibilité de définir la séquence var activeObj = { etat : 0, run : function() { switch (etat) { case 0: alterneCouleur("green") etat = 1 break case 1: alterneCouleur("red") etat = 0 break } var that = this setTimeout( function() { that.run() }, 500)}

Faculté I&C, Claude Petitpierre, André Maurer Threads La séquence ininterrompue dappels par timeout constitue le fil (de lhistoire), en anglais thread. Si lon crée plusieurs objets de ce type, on pourra garder plusieurs fils actifs indépendants. Un thread est un moyen de suivre plusieurs activités sans les mélanger. Ce concept est à la base de la programmation pseudo- parallèle. Java, C++… offrent des moyens pour créer des threads. En C++, ils ne sont pas liés à un objet. Dans ces langages, le fil peut être commuté à tout instant, pas seulement entre les fonctions. Exemple

Faculté I&C, Claude Petitpierre, André Maurer Au moyen dun constructeur function Actif () { var etat = 0 var that = this <<<<<< this.couleur = "green" this.run = function() { switch (etat) { case 0: alterneCouleur("green") etat = 1 break case 1: alterneCouleur("red") etat = 0 break } setTimeout( function() { that.run() }, 500)}

Faculté I&C, Claude Petitpierre, André Maurer Extension de Javascript (Compilateur + librairies de LemanOS) process XYZ (nom) { this.run() { for (;;) { waituntil(now() ) }

Faculté I&C, Claude Petitpierre, André Maurer Suspension dans un "thread" process Runner() { this.run = function() { if (x>0) waituntil(now()+10) x = 10 } x=0 }

Faculté I&C, Claude Petitpierre, André Maurer Découpage par le compilateur this.run = function() { for(;;) { switch(_state) { case 10000: if (x>0) { if (!(x>0)) {_state=10002;break} _state = waituntil(now()+10) setTimeout(that.run, 10)return case 10001: x = 10 } case 10002: x=0 x = 0 break } } }} compilation

Faculté I&C, Claude Petitpierre, André Maurer Appel d'un objet avec thread... p1 = new XYZ() p1.meth()... process XYZ (nom, p1) { this.meth = function() { } this.run() { // boucle infinie for (;;) {... accept meth }

Faculté I&C, Claude Petitpierre, André Maurer Synchronisation entre objects rendez-vous process ABC (nom, p1) { this.run() { for (;;) { waituntil(now() ) p1.meth() }}} process XYZ (nom, p1) { this.meth = function() { } this.run() { for (;;) { accept meth }}}

Faculté I&C, Claude Petitpierre, André Maurer Attentes concurrentes this.run(nom) { select { case p1.m1() case p2.m2() } this.m1 = function()( { } this.run(nom) { select { case accept m1 case p2.m2() } this.m2 = function()( { } this.run(nom) { select { case accept m2 } Trois rendez-vous possibles

Faculté I&C, Claude Petitpierre, André Maurer kernel.js prêts rendez-vous délais

Faculté I&C, Claude Petitpierre, André Maurer Oiseaux passant par un couloir Programme Programme process Oiseau() { this.run = function() { for(;;) { // avant le couloir couloir.entrer() // avancer dans le couloir couloir.sortir() // après le couloir } } } process Couloir() { this.entrer() { } this.sortir() { } this.run = function() { for(;;) { accept entrer accept sortir } } }

Faculté I&C, Claude Petitpierre, André Maurer select avec toutes les possibilités select { case when (i==0) x = proc.meth() x = x + 1 case when (y>0) accept m2 case when (y<0) waituntil(now() ) }

Faculté I&C, Claude Petitpierre, André Maurer Boîte aux lettres // quoi process Poste(nom) { this.fifo = [ ] this.deposer = function (paquet) { this.fifo.push(paquet) } this.prendre= function () { return this.fifo.shift() }... // quand... this.run = function () { for (;;) { select { case accept deposer case when (this.fifo.length>0) accept prendre } waituntil(now()+400) } } } Programme 1 Programme 2