Multithreading sui retrocomputer

COORDINARE I PROTOTHREAD

I protothread sono dei thread che vengono eseguiti in un contesto di multithreading cooperativo. I programmi cedono volontariamente il controllo una volta finita l'operazione in corso. Più precisamente, lo scheduler passa il controllo ad un altro thread solo in tre casi specifici:

  1. al termine del thread;
  2. quando esplicitamente cede il controllo;
  3. al passaggio nello stato di attesa;

Il primo caso avviene quando la funzione termina, arrivando al marcatore MR_PTI_END. Il secondo caso è innescato dalla chiamata a MR_PTI_YIELD, che abbiamo già visto in precedenza.

Il terzo caso, più interessante, viene a verificarsi quando si chiama una delle funzioni di attesa:

Queste funzioni sono utili in quanto permettono di implementare forme più o meno complesse di cooperazione e/o di sincronismo.

Move to FUNZIONI BLOCCANTI E NON BLOCCANTI.