Multithreading sui retrocomputer

COME SONO IMPLEMENTATI NELLA MIDRES LIBRARY?

I protothread sono implementati con delle macro, usando le cosidette “continuazioni locali” (local continuations). Inoltre, possono essere usati anche in modo indipendente dalle primitive grafiche.

Una continuazione locale rappresenta lo stato di esecuzione corrente in un punto particolare del programma, ma non fornisce alcuna cronologia delle chiamate o variabili locali. È possibile impostare una continuazione locale in una funzione specifica per catturare lo stato della funzione.

Dopo che è stata impostata una continuazione locale può essere utilizzata per ripristinare lo “stato” della funzione nel punto in cui era stata impostata la continuazione locale.

Le continuazioni locali possono essere implementate in vari modi:

  1. utilizzando il codice assembler specifico della macchina,
  2. utilizzando costrutti C standard, oppure
  3. usando “estensioni” del compilatore.

Nell'implementazione presente sulla libreria MIDRES si è scelta l'opzione del linguaggio C standard, che richiede solo due byte di stato per protothread e utilizza l'istruzione C “switch” in un modo non ovvio. Come contropartita si ha l'impossibilità di utilizzare, nel codice, l'istruzione switch.

Move to index.