C'è una differenza tra fibre, coroutine e fili verdi e se è così che cos'è?

44

Oggi stavo leggendo diversi articoli su Internet su fibre, coroutine e fili verdi, e sembra che questi concetti abbiano molto in comune, ma ci sono lievi differenze, specialmente quando parliamo di fibre e coroutine.

Esiste un riassunto conciso e corretto su cosa li rende diversi l'uno dall'altro?

    
posta DejanLekic 22.08.2014 - 16:59
fonte

1 risposta

93

Un Fiber è un thread leggero che utilizza il multitasking cooperativo anziché il multitasking preventivo. Una fibra in esecuzione deve "produrre" esplicitamente per consentire l'esecuzione di un'altra fibra, il che rende la loro implementazione molto più semplice rispetto ai thread del kernel o dell'utente.

Una Coroutine è un componente che generalizza una subroutine per consentire più punti di ingresso per sospendere e riprendere l'esecuzione in determinate posizioni. A differenza delle subroutine, le coroutine possono uscire chiamando altre coroutine, che possono successivamente ritornare al punto in cui sono state invocate nella coroutine originale.

Un Thread verde è un thread pianificato da una macchina virtuale (VM) invece che dal funzionamento sottostante sistema. I thread verdi emulano gli ambienti con multithreading senza fare affidamento su alcuna funzionalità del sistema operativo nativo e vengono gestiti nello spazio utente anziché nello spazio del kernel, consentendo loro di lavorare in ambienti che non hanno il supporto del thread nativo.

    
risposta data 22.08.2014 - 17:12
fonte

Leggi altre domande sui tag