首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么要使用APM而不是使用单独的线程?

为什么要使用APM而不是使用单独的线程?
EN

Stack Overflow用户
提问于 2009-04-10 05:42:38
回答 3查看 1.5K关注 0票数 2

如果我想读或写一个文件,我可以使用stream.BeginRead和stream.EndRead,但这需要回调和大量使用异步编程模型的丑陋而复杂的代码。

为什么我想使用这些异步IO方法(在幕后使用.NET线程池)而不是以同步方式编写相同的代码,并将其传递给线程池。(而不是用回调来分割我的方法。)

更新:

一些(好的)响应表明,使用APM可以帮助我避免创建线程--我对此表示赞同,因为每个新线程都有自己的2MB堆栈。但是“BeginRead”和“Endread”在哪里执行呢?线程池?重用已经分配的线程是唯一的好处吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-04-10 05:48:29

首先,您还应该查看基于事件的APM

为了回答您的问题,您可能正在考虑使用一个单独的线程,并进行同步调用。另一个线程将阻塞等待调用完成。

对于APM,根本没有阻塞的线程。线程池中没有抽签。这对于像ASP.NET这样的服务器应用程序特别重要,因为这意味着阻塞线程不会阻止请求被处理。

票数 6
EN

Stack Overflow用户

发布于 2009-04-16 19:28:58

Jeff有一个非常聪明和干净的道路来使用APM。

票数 2
EN

Stack Overflow用户

发布于 2009-04-10 05:54:04

使用异步调用的优点是不会将线程阻塞浪费在I/O上,因此在执行大量I/O操作的情况下,明智地使用线程是关键。

尽管如此,是的,开始-结束的APM是可怕的不得不使用。如果您确实需要非阻塞I/O,并且有为应用程序的一部分使用另一种语言的灵活性,请尝试F#。“异步工作流”使编写异步代码变得轻而易举。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/736809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档