“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 185 — #195
i
i
i
i
i
i
i
i
4.1 Le modèle concurrent dataflow
185
déclaratif concurrent a toujours cette propriété, du moins si le programme n’essaie
pas de lier la même variable à des valeurs incompatibles (voir la section 4.1). On peut
dire qu’il n’y a pas de courses (situations de compétition ou « race conditions ») dans
un programme déclaratif concurrent. Une course est simplement un comportement
non-déterministe observable.
La structure du chapitre
Ce chapitre explique la première forme de concurrence déclarative, la concurrence
dataflow (« par flux de données »), que l’on peut appeler la concurrence dirigée par
l’offre (« supply-driven concurrency »). Il y a trois sections qui expliquent cette forme
de programmation concurrente, suivies par une section qui explique les limitations de
tous les modèles déclaratifs :
– La section 4.1 définit le modèle déclaratif concurrent qui étend le modèle déclaratif avec un concept, le fil. La section définit la déclarativité dans un contexte
concurrent.
– La section 4.2 donne les bases de la programmation avec plusieurs fils qui communiquent par dataflow.
– La section 4.3 explique la technique la plus populaire, la communication par
flots.
– La section 4.4 montre les deux limitations principales de la programmation déclarative : le manque de modularité et l’incapacité à exprimer le non-déterminisme.
Ces limitations sont les motivations principales pour introduire l’état explicite
dans le chapitre 5.
Faute de place, nous ne pouvons explorer les autres formes de programmation concurrente, à savoir la concurrence paresseuse (qui est déclarative aussi), la concurrence par
envoi de messages et la concurrence par état partagé. Pour ces modèles, voir [97].
4.1 LE MODÈLE CONCURRENT DATAFLOW
Le modèle déclaratif du chapitre 2 est séquentiel : il y a une pile d’instructions qui
s’exécute sur la mémoire à affectation unique. Nous pouvons étendre le modèle en
deux étapes, en ajoutant un concept dans chaque étape :
– La première étape est la plus importante. Nous ajoutons les fils et une instruction
thread s end. Un fil est simplement une instruction en exécution, c’est-àdire, une pile sémantique. C’est tout ce dont nous avons besoin pour programmer
avec la concurrence déclarative. Nous verrons que l’addition des fils garde toutes
© Dunod – La photocopie non autorisée est un délit
i
i
i
i
i
i
i
i
4.1 Le modèle concurrent dataflow
185
déclaratif concurrent a toujours cette propriété, du moins si le programme n’essaie
pas de lier la même variable à des valeurs incompatibles (voir la section 4.1). On peut
dire qu’il n’y a pas de courses (situations de compétition ou « race conditions ») dans
un programme déclaratif concurrent. Une course est simplement un comportement
non-déterministe observable.
La structure du chapitre
Ce chapitre explique la première forme de concurrence déclarative, la concurrence
dataflow (« par flux de données »), que l’on peut appeler la concurrence dirigée par
l’offre (« supply-driven concurrency »). Il y a trois sections qui expliquent cette forme
de programmation concurrente, suivies par une section qui explique les limitations de
tous les modèles déclaratifs :
– La section 4.1 définit le modèle déclaratif concurrent qui étend le modèle déclaratif avec un concept, le fil. La section définit la déclarativité dans un contexte
concurrent.
– La section 4.2 donne les bases de la programmation avec plusieurs fils qui communiquent par dataflow.
– La section 4.3 explique la technique la plus populaire, la communication par
flots.
– La section 4.4 montre les deux limitations principales de la programmation déclarative : le manque de modularité et l’incapacité à exprimer le non-déterminisme.
Ces limitations sont les motivations principales pour introduire l’état explicite
dans le chapitre 5.
Faute de place, nous ne pouvons explorer les autres formes de programmation concurrente, à savoir la concurrence paresseuse (qui est déclarative aussi), la concurrence par
envoi de messages et la concurrence par état partagé. Pour ces modèles, voir [97].
4.1 LE MODÈLE CONCURRENT DATAFLOW
Le modèle déclaratif du chapitre 2 est séquentiel : il y a une pile d’instructions qui
s’exécute sur la mémoire à affectation unique. Nous pouvons étendre le modèle en
deux étapes, en ajoutant un concept dans chaque étape :
– La première étape est la plus importante. Nous ajoutons les fils et une instruction
thread s end. Un fil est simplement une instruction en exécution, c’est-àdire, une pile sémantique. C’est tout ce dont nous avons besoin pour programmer
avec la concurrence déclarative. Nous verrons que l’addition des fils garde toutes
© Dunod – La photocopie non autorisée est un délit
