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) ...
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 –
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. –