Threads

Processus : tout est dupliqué (dont la mémoire), sauf :

Threads vs Processus

Processus Threads
Peut se planter sans planter tout le programme (largement utilisé dans les navigateurs webs), (vrai uniquement pour les languages unsafe) Moins chers (écart + grand sous Windows que sous Unix)
Plus facile de partager les choses Permissions identiques
Permissions différentes
Threads système (ou processus léger) est visible au noyau et threads utilisateurs n’est utile que pour le développeur.

Implémentation

Java Python C
- <2 : 1-N
- 2-16 : 1-1
- > 17 : M-N
1-N 3 bibliothèques :
- pthreads (utile pour Posix)
- Win32 threads (utile pour Windows)
- threads C11 (compatible avec Posix et Windows)

Pthreads

  int pthread_create(..., f, c);
  // Avec
  int f(void *c) -> f(c)

Souvent, on va envoyer une structure via c, donc on la cast en void* lors de la création du thread et on le recast vers notre structure à l’arrivée.

  pthread_join
// Mutex
pthread_mutex_init
// Note : passer pthread_mutex_attribute à NULL
//
// Variable de condition
pthread_condvar_init