2016-05-17 96 views
9

I fili verdi sono stati introdotti in Erlang e probabilmente tutte le lingue basate su di essi li conoscono, anche in go (gorutines). Poi afaik sono stati rimossi dalla ruggine.Thread verde in .NET

Le mie domande:

  • come si potrebbe implementare fili verdi in .NET? Ci sono alcune avvertenze che impediscono al runtime .NET attuale di implementarle?
  • ha senso anche in termini di prestazioni? Abbiamo un'attività abbastanza leggera e in (prossimo) futuro avremo anche Task ValueType (più adatto per alcuni scenari) ...
+5

Erlang and Go non forniscono fili verdi. Il termine è stato erroneamente utilizzato per essere utile. Le fibre non hanno funzionato bene nell'era del multi-core, un tentativo di aggiungerle a NET 2.0 è stato un fallimento. Utilizzare AppDomain per ottenere il tipo di isolamento stato fornito da Erlang e Go. Ottieni un thread leggero dalla classe Task e le parole chiave async/await. Guarda Akka.NET –

+0

Se si utilizza il pool di oggetti per gestire le attività e migliorare le prestazioni mediante la memorizzazione nella cache, non è necessario utilizzare thread verdi. Risultati di performance mediocri di solito facendo tutto asincrono. Mix di async e sincronizzazione con caching ti offriranno prestazioni migliori. Se i thread verdi fossero di grande utilità, sono sicuro che gli sviluppatori .NET lo avrebbero considerato molto tempo fa. –

risposta

-1

Nella programmazione per computer, i fili verdi sono thread che sono programmati da una libreria runtime o virtuale machine (VM) anziché nativamente dal sistema operativo sottostante. Thread gestiti scritto con NET Framework verrà pianificato dal framework ma qualunque sia il sistema operativo Windows verrà eseguito al di sotto e collegamento thread alla CPU (come NET richiede Windows).

+1

"come NET richiede Windows" che ovviamente non è stato vero dal momento che .NET Core è stato annunciato quasi due anni fa. –