Concurrence
- ce qu'est un thread
- parallèle pourquoi c'est bien : algo + complexité
- faire ce qui marche si pas partagé :
- serveur -> thread
- calcul image fractale
- si partagé :
- opération atomique (!)
- mutex
- non blocking avec opérations atomiques
https://en.wikipedia.org/wiki/Concurrency_pattern
https://www.classes.cs.uchicago.edu/archive/2018/spring/12300-1/lab6.html
TBD :
- concurrence = de façon indépendante
- parallèlisme = en même temps
accès concurrent
atomicité.
set and check.
algorithme de Dekker
Atomicité
https://en.wikipedia.org/wiki/Read–modify–write et 3 opération dans read modify write
plusieurs threads qui font +1. Si atomique ok, sinon peut poser des soucis.
Threads
https://www.cs.dartmouth.edu/~campbell/cs50/threads.html
locks ? thread C thread safety https://web.mit.edu/6.005/www/fa14/classes/18-thread-safety/ programming with threads playlist
https://fr.wikipedia.org/wiki/Situation_de_compétition
si pas de mutex : race condition
si mutex :
- deadlock
- starvation
blocking algo :
- thread avec le lock est endormi : ça bloque tous les autres.
- non blocking, peut dépasser le max si on fait pas gaffe (+1 si < max por plusieurs threads)
non blocking :