Quali altri sistemi accanto Erlang si basano sui “Processi verdi”?
-
20-09-2019 - |
Domanda
Stavo leggendo questa pagina informativa su Verde Filo (Wikipedia) e mi chiedo: che cosa altri sistemi di programmazione si basano su "processi verdi" accanto Erlang?
Modifica : "filo verde = Processo Verde"
Processo Green sulla base
- Erlang
- Inferno
filo verde basato
- Vai
processo nativo basato
- C, C ++
Aggiornamento : Nessuno ha risposto alla domanda direttamente e così ho accettato una risposta che mi ha fornito ulteriori informazioni per quanto riguarda il Processi verdi , in generale
.Soluzione
Per quanto riguarda l'intero "filo verde" come un nome, vedere commenti su questo posta :
Più seriamente, sono sorpreso di vederti usando un termine dal campo Java, invece di qualcosa di meno jargony tipo "user-space threading cooperativa"; bravo ragazzo Peter van der Linden spiega l'origine del termine:
Quando Java 1,0 uscito prima su Solaris, ma non ha utilizzato il nativo Solaris biblioteca libthread.so per supportare le discussioni. Invece ha usato il supporto filo di runtime che era stato scritto in Java per un nome in codice precedente progetto "Green". Quella libreria di thread è venuto per essere conosciuta come "fili verdi".
Vorrei che potessimo usare la terminologia da sistemi operativi, invece, ad esempio, spazio utente vs programmazione del kernel di fili. Dopo tutto, è una distinzione livello di sistema operativo. Il nome "filo verde" è solo la storia di Java.
Altri suggerimenti
quanto mi risulta, questi "processi verdi" sono in realtà sostanzialmente diversa da fili verdi. La mancanza di risultati stato condiviso dalla progettazione del linguaggio, non da qualsiasi technolgical o grande differenza concettuale. Erlang semplicemente:
- Non ha alcun tipo di variabili globali che sarebbe accessibile da più processi
- Consente la comunicazione tra i processi solo attraverso messaggi espliciti parametri
- copie in modo implicito messaggio (il grande svantaggio di questa tecnica)
Quindi, non c'è alcun modo per due processi di accedere alla stessa memoria, anche se potrebbe hanno condiviso la memoria virtuale a livello di sistema operativo (che immagino rende Erlang più facile da implementare su architetture che non hanno le discussioni a livello di sistema operativo ).
Java li ha usati fino ad 1.2 .. poi si sono resi conto che avere un filo più leggero che è prevista per due volte non è stato così efficiente.
Ora, c'è anche Rust (vedi rust-lang.org), che dispone di un modulo per la N:. Discussioni M e uno per thread del kernel