纤程与异步等待
Fibers vs async await
我正在加入一个 C# 项目,开发人员在其中大量使用 Fibers。在这个项目之前我什至没有听说过它们并且以前使用 async await
和 Threads
和 BackgroundWorker
s 到我的多任务操作。今天我问他们为什么用 Fiber
s ,主要开发人员说这样更容易调试。这意味着他知道特定函数来自哪个线程,甚至可以访问堆栈中更高的变量。
我想知道使用 Fiber
s 与使用新的 async await
和使用 Thread
s 的优缺点是什么。
PS:我们正在使用 .Net 4.5
I was asking them why they used Fibers and the main developer said
that it's easier for him to debug. Meaning he knows which thread a
particular function has come from and even could access the variables
higher in the stack.
这听起来很奇怪。将任务并行库与默认 ThreadPoolTaskScheduler
以外的自定义调度程序一起使用时,您可以自己决定任务的调度方式(不一定在新线程上)。另一方面,async-await
为您提供了一种执行异步 IO 的便捷方式。 VS 使您能够像同步执行一样调试异步代码。
为了使用纤程,必须调用非托管 API,因为 .NET 在 BCL 中不提供任何托管包装器。 Even the docs of fibers clearly say there isn't a clear advantage to using them:
In general, fibers do not provide advantages over a well-designed
multithreaded application. However, using fibers can make it easier to
port applications that were designed to schedule their own threads.
I was wondering what are the advantages and disadvantages of using
Fibers vs using the new async await and using Threads.
使用 async-await
可以让您在进行 IO 绑定异步工作的同时感觉自己正在同步执行。 Task Parallel Library 提供了一种在专用线程上调度工作的简单方法,无论是线程池线程还是新线程,同时允许您挂钩调度这些工作单元的机制。我真的看不出今天使用纤程有什么好处,因为框架必须提供所有功能。
我认为您应该告诉您的主要开发人员分别使用任务并行库和 async-await
阅读有关多线程和异步 IO 工作的文章。我认为这会让你们所有人的生活更轻松。
我正在加入一个 C# 项目,开发人员在其中大量使用 Fibers。在这个项目之前我什至没有听说过它们并且以前使用 async await
和 Threads
和 BackgroundWorker
s 到我的多任务操作。今天我问他们为什么用 Fiber
s ,主要开发人员说这样更容易调试。这意味着他知道特定函数来自哪个线程,甚至可以访问堆栈中更高的变量。
我想知道使用 Fiber
s 与使用新的 async await
和使用 Thread
s 的优缺点是什么。
PS:我们正在使用 .Net 4.5
I was asking them why they used Fibers and the main developer said that it's easier for him to debug. Meaning he knows which thread a particular function has come from and even could access the variables higher in the stack.
这听起来很奇怪。将任务并行库与默认 ThreadPoolTaskScheduler
以外的自定义调度程序一起使用时,您可以自己决定任务的调度方式(不一定在新线程上)。另一方面,async-await
为您提供了一种执行异步 IO 的便捷方式。 VS 使您能够像同步执行一样调试异步代码。
为了使用纤程,必须调用非托管 API,因为 .NET 在 BCL 中不提供任何托管包装器。 Even the docs of fibers clearly say there isn't a clear advantage to using them:
In general, fibers do not provide advantages over a well-designed multithreaded application. However, using fibers can make it easier to port applications that were designed to schedule their own threads.
I was wondering what are the advantages and disadvantages of using Fibers vs using the new async await and using Threads.
使用 async-await
可以让您在进行 IO 绑定异步工作的同时感觉自己正在同步执行。 Task Parallel Library 提供了一种在专用线程上调度工作的简单方法,无论是线程池线程还是新线程,同时允许您挂钩调度这些工作单元的机制。我真的看不出今天使用纤程有什么好处,因为框架必须提供所有功能。
我认为您应该告诉您的主要开发人员分别使用任务并行库和 async-await
阅读有关多线程和异步 IO 工作的文章。我认为这会让你们所有人的生活更轻松。