{{htmlmetatags>metatag-robots=() metatag-title=(Implementazione sulla libreria MIDRES | Multithreading on retrocomputers) metatag-keywords=(Multithreading,Commodore 64,Commodore VIC20,Atari,Commodore128,MIDRES Library,6502,6510) metatag-description=(Come implementare il multithreading veloce ed efficiente su computer con risorse limitate.) metatag-media-og:image=(:mt6502.png) metatag-og:title=(Implementations on MIDRES Library | Multithreading on retrocomputers) metatag-og:description=(Come implementare il multithreading veloce ed efficiente su computer con risorse limitate.) }} ====== 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: - utilizzando il codice assembler specifico della macchina, - utilizzando costrutti C standard, oppure - usando "estensioni" del compilatore. Nell'implementazione presente sulla [[:it:midres_library|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. [[:it:mt6502|Move to index]].