我正在加入一个开发人员大量使用的C#项目 纤维。在这个项目之前,我甚至没有听说过它们以前使用过 async await
和 Threads
和 BackgroundWorker
我的多任务操作。今天我问他们为什么用 Fiber
s和主要开发人员说,他更容易调试。这意味着他知道特定函数来自哪个线程,甚至可以访问堆栈中更高的变量。
我想知道使用的优点和缺点是什么 Fiber
s vs使用新的 async await
和使用 Thread
秒。
PS:我们正在使用.Net 4.5
我正在加入一个开发人员大量使用的C#项目 纤维。在这个项目之前,我甚至没有听说过它们以前使用过 async await
和 Threads
和 BackgroundWorker
我的多任务操作。今天我问他们为什么用 Fiber
s和主要开发人员说,他更容易调试。这意味着他知道特定函数来自哪个线程,甚至可以访问堆栈中更高的变量。
我想知道使用的优点和缺点是什么 Fiber
s vs使用新的 async await
和使用 Thread
秒。
PS:我们正在使用.Net 4.5
我问他们为什么他们使用Fibers而主要的开发者说 他调试起来比较容易。意思是他知道哪个线程了 特定功能来自甚至可以访问变量 堆栈中更高。
这听起来完全是奇特的。将任务并行库与默认情况下的自定义调度程序一起使用时 ThreadPoolTaskScheduler
,您可以自己决定如何安排任务(并且不一定在新线程上)。 async-await
另一方面,为您提供了一种执行异步IO的便捷方式。 VS使您能够使用同步执行的方式调试异步代码。
为了使用光纤,必须调用非托管API,因为.NET不在BCL中提供任何托管包装。 甚至纤维的文件都明确表示使用它们没有明显的优势:
一般来说, 纤维不能提供优于精心设计的优点 多线程应用程序。 但是,使用纤维可以更容易 设计用于调度自己的线程的端口应用程序。
我想知道使用的优点和缺点是什么 Fibers vs使用新的异步等待并使用Threads。
运用 async-await
为您提供IO绑定异步工作的好处,同时感觉您正在同步执行。任务并行库提供了一种简单的方法来调度专用线程的工作,无论是线程池线程还是新线程,同时允许您连接到调度这些工作单元的机制。我认为今天使用光纤没有任何优势,所有框架都必须提供。
我想你应该告诉你的主要开发人员使用任务并行库和任务并行库来阅读多线程和异步IO工作 async-await
, 分别。我想这会让你们所有人的生活更轻松。