Che aspetto hanno le goroutine, le fibre di rubino, ecc. sul sistema operativo / kernel?

3

Nella concorrenza di processo e nella concomitanza di thread è abbastanza ovvio come il kernel li vede mentre si collegano direttamente a cose reali che il kernel gestisce. Quando si tratta di gorotine del Golang e di fibre di rubino (queste sono cose simili, giusto?) Non ho idea di come siano gestite. Sono gestiti dalle rispettive lingue di implementazione / Virtual Machine (so che Go non ha una VM) o sono mappati su qualcosa che il kernel è più adatto a gestire?

    
posta richoffrails 22.09.2013 - 09:44
fonte

1 risposta

7

Dipende dall'implementazione. YARV implementa la stessa Fibers, JRuby li implementa come Java Threads, eccetto su JVM che hanno l'estensione proprietaria di Coroutine (che non fa parte della Specifica JVM) dove li implementa come Coroutine JVM.

È lo stesso di Threads, davvero. MRI implementa Threads stesso, YARV li implementa come thread POSIX / Windows, JRuby li implementa come Thread JVM, IronRuby li implementa come Thread CLI. Inizialmente, Rubinius li implementò da sé e in seguito passò a implementarli come thread POSIX / Windows.

BEAM Erlang VM implementa i processi stessi. Erjang Erlang VM li implementa come Kilim Actors.

In altre parole: ciò che le Fibre di Ruby ecc. assomigliano al Kernel dipende da ciò che l'autore della particolare implementazione vuole che assomigli al Kernel.

    
risposta data 22.09.2013 - 10:34
fonte

Leggi altre domande sui tag