Aller au contenu principal

IPC & synchronisation

#IPC & synchronisation

Pipes, files de messages, mémoire partagée, verrous, sémaphores, et conditions de course.

#Panorama

  • Pipes/queues: passage de messages, découplage producteur/consommateur.
  • Shared memory: rapide mais nécessite synchronisation.
  • Verrous/sémaphores/moniteurs: exclusion mutuelle, signaux, attente conditionnelle.

#Exemple producteur‑consommateur (pseudo‑code)

bg-[rgba(var(--code-inline-bg),0.5)] text-[rgb(var(--fg))] px-1 roundedbg-[rgba(var(--code-inline-bg),0.5)] text-[rgb(var(--fg))] px-1 rounded
1buffer = Queue(max=10)2 3producer:4  loop:5    x = make_item()6    buffer.put(x)   # bloque si plein7 8consumer:9  loop:10    x = buffer.take()  # bloque si vide11    process(x)

#Problèmes classiques

  • Deadlock (interblocage), livelock, famine; conditions de Coffman et évitement.