Me estoy uniendo a un proyecto de C# en el que los desarrolladores utilizan mucho Fibers . Antes de este proyecto, ni siquiera había oído hablar de ellos y anteriormente usaba async await
y Threads
y BackgroundWorker
s para mis operaciones multitarea. Hoy les pregunté por qué usaron Fiber
s y el desarrollador principal dijo que es más fácil para él depurar. Lo que significa que sabe de qué hilo proviene una función en particular e incluso podría acceder a las variables más arriba en la pila.
Me preguntaba cuáles son las ventajas y desventajas de usar Fiber
s frente a usar el nuevo async await
y usar Thread
s.
PD: estamos usando .Net 4.5
Les estaba preguntando por qué usaban Fibers y el desarrollador principal dijo que es más fácil para él depurar. Lo que significa que sabe de qué hilo proviene una función en particular e incluso podría acceder a las variables más arriba en la pila.
Eso suena absolutamente peculiar. Al usar la biblioteca paralela de tareas con programadores personalizados que no sean el ThreadPoolTaskScheduler
predeterminado, usted mismo puede decidir cómo se programan sus tareas (y no necesariamente en subprocesos nuevos). async-await
por otro lado, le proporciona una forma conveniente de hacer E/S asíncrona. VS le brinda la capacidad de depurar código asincrónico como si se estuviera ejecutando sincrónicamente.
Para usar fibras, habría que invocar API no administradas, ya que .NET no ofrece contenedores administrados en la BCL. Incluso los documentos de fibras dicen claramente que no hay una clara ventaja en usarlas :
En general, las fibras no brindan ventajas sobre una aplicación de subprocesos múltiples bien diseñada. Sin embargo, el uso de fibras puede facilitar la migración de aplicaciones que se diseñaron para programar sus propios subprocesos.
Me preguntaba cuáles son las ventajas y desventajas de usar Fibras frente a usar la nueva espera asíncrona y usar Subprocesos.
El uso async-await
le brinda el beneficio de realizar un trabajo asincrónico vinculado a IO mientras siente que está ejecutando de forma sincrónica. La biblioteca paralela de tareas proporciona una manera fácil de programar el trabajo en subprocesos dedicados, ya sean subprocesos de grupo de subprocesos o subprocesos nuevos, al tiempo que le permite conectarse al mecanismo que programa esas unidades de trabajo. Realmente no veo ninguna ventaja en el uso de fibras hoy en día, con todo lo que el marco tiene para ofrecer.
Creo que debería decirle a su desarrollador principal que lea un poco sobre el trabajo de E/S asíncrono y de subprocesos múltiples utilizando la biblioteca paralela de tareas y async-await
, respectivamente. Creo que les haría la vida más fácil a todos.