Strumenti Utente

Strumenti Sito


it:mt6502:coordinate
Traduzioni di questa pagina:


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:

  • MR_PTI_WAIT_UNTIL(condition) aspetta fino a che condition diventa true;
  • MR_PTI_WAIT_WHILE(condition) aspetta mentre condition è true;
  • MR_PTI_WAIT_THREAD(thread) aspetta la fine dell'esecuzione del thread;

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.