mi è stato chiesto loro perché hanno usato fibre e lo sviluppatore principale ha detto che è più facile per lui per eseguire il debug. Significa che sa da quale thread proviene una particolare funzione e potrebbe persino accedere alle variabili più in alto nello stack.
Sembra strano. Quando si utilizza la Libreria parallela attività con gli scheduler personalizzati diversi dal valore predefinito ThreadPoolTaskScheduler
, è possibile decidere autonomamente come pianificare le attività (e non necessariamente su nuovi thread). async-await
d'altra parte fornisce un modo conveniente di fare IO asincrono. VS offre la possibilità di eseguire il debug del codice asincrono utilizzando come se fosse in esecuzione in modo sincrono.
Per utilizzare le fibre, è necessario richiamare API non gestite, poiché .NET non offre alcun wrapper gestito nel BCL. Even the docs of fibers clearly say there isn't a clear advantage to using them:
In generale, fibre non forniscono vantaggi rispetto ad un ben progettato applicazione multithread. Tuttavia, l'utilizzo delle fibre può semplificare le applicazioni di porta progettate per pianificare i propri thread.
mi chiedevo quali sono i vantaggi e gli svantaggi di usare fibre vs utilizzando il nuovo async attendere e l'utilizzo di discussioni.
L'utilizzo di async-await
offre il vantaggio di eseguire il lavoro asincrono legato all'IO mentre si sente come se si eseguisse in modo sincrono. La Libreria parallela attività fornisce un modo semplice di pianificare il lavoro su thread dedicati, siano essi thread di thread-pool o nuovi thread, consentendo al contempo di agganciare il meccanismo che pianifica le unità di lavoro. Oggi non vedo alcun vantaggio nell'utilizzare le fibre, con tutto ciò che la struttura ha da offrire.
Penso che dovresti dire al tuo principale sviluppatore di fare un po 'di lettura sul lavoro IO multi-threaded e asincrono usando la Libreria parallela Task e async-await
, rispettivamente. Penso che renderebbe la vita più facile per tutti voi.
fonte
2015-07-04 13:44:04
Quale implementazione di fibra si riferisce all'uso di? La [Windows Fiber API] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682661 (v = vs.85) .aspx)? – timmyl
È vero che quando si mette in pausa il debugger non è possibile vedere cosa fa l'app perché tutti i thread non fanno nulla la maggior parte del tempo. Questo è un grande svantaggio di IO asincrono. Non consiglierei mai le fibre, però. – usr
Le fibre sono più costose delle attività. Le fibre richiedono 1 MB di memoria per lo stack. Le attività richiedono memoria per le variabili locali, ma usano lo stack dello scheduler. –