Per curiosità più di ogni altra cosa ho cercato un set di classi C# /. Net per supportare fibre/co-routines (the win32 version) e non ho avuto fortuna.C'è una fibra ottica in .net?
Qualcuno sa di una tale bestia?
Per curiosità più di ogni altra cosa ho cercato un set di classi C# /. Net per supportare fibre/co-routines (the win32 version) e non ho avuto fortuna.C'è una fibra ottica in .net?
Qualcuno sa di una tale bestia?
Hai visto questo:
Titolo "coroutine di esecuzione per NET avvolgendo l'API non gestiti Fiber"
nel numero di settembre 2003 del MSDN Magazine
No. Ci isn Un'API Fibra nel Framework. Ho il sospetto che questo è perché c'è poco vantaggio per il loro utilizzo - anche il fiber API page (nativo) cita:
In generale, le fibre non forniscono vantaggi rispetto un'applicazione multithread ben progettato.
.NET rende molto più facile sviluppare un'applicazione "ben progettata" multithread che sospetto sia poco utile per un'API in fibra.
In realtà, le fibre possono essere utilizzate per implementare coroutine relativamente economiche (si veda: http://en.wikipedia.org/wiki/Coroutine e http://en.wikipedia.org/wiki/Fiber_%28computer_science%29). Fino a quando C# supporta in modo nativo le coroutine come caratteristiche del linguaggio, le fibre sono probabilmente il modo più semplice per arrivarci. – LBushkin
Puoi implementarlo utilizzando generatori in C# in modo nativo: http://en.wikipedia.org/wiki/Coroutine#Coroutines_and_generators –
Generatori di mix con alcune delle nuove cose come Rx e TPL, e penso che ti verrebbe difficile trova un buon uso delle fibre in C# ora ... –
Se ricordo correttamente, ce n'era uno in .NET 2 beta, ma è stato eliminato. Eric Lippert ha scritto su fibre e continuazioni e ha detto che ha scelto il minimo necessario (link).
Ci sono modi per utilizzare gli iteratori e produrre per realizzare un sistema di coroutine, vedere this link. E another one da Joe Duffy.
Collegamento migliore di quello che ho postato per utilizzare gli iteratori ... –
Questa è roba buona. – dkackman
È interessante notare che stavo giocando con il codice dall'articolo MSDN collegato (sopra) e ho ricevuto questo avviso (.net 4 beta): avviso CS0618: 'System.AppDomain.GetCurrentThreadId()' è obsoleto: 'AppDomain.GetCurrentThreadId ha stato deprecato perché non fornisce un ID stabile quando i thread gestiti sono in esecuzione su fibre (ovvero thread leggeri). Per ottenere un identificatore stabile per un thread gestito, utilizzare la proprietà ManagedThreadId su Thread. http://go.microsoft.com/fwlink/?linkid=14202 " " aka thread leggeri "è interessante. – dkackman
Non ho che uno sguardo veloce abbastanza interessante. – dkackman
Articolo interessante, se non aggiornato (utilizzando VS 2003 style Managed C++). –
E si prega di notare il grande avvertimento rosso in alto: Non usare questo. –