gpt4 book ai didi

.net - 在 C# .NET 中,异步操作是否一定会创建一个阻塞线程?

转载 作者:行者123 更新时间:2023-12-04 10:10:26 24 4
gpt4 key购买 nike

这更多是关于 MSDN here 中描述的 C# .NET 中的异步模式的一般问题。 .

当长跑同步 需要调用操作(例如 - WCF、DB 查询、IO 等),并且我不希望线程阻塞(例如 - GUI 线程),这是否意味着必须存在另一个线程来执行阻塞?

是否制作 同步 调用 异步 一定需要一个线程在某处阻塞吗?

因此,如果我进行 10 个长时间运行的异步调用(实际上是 10 个同步调用),是否必须有 10 个线程在等待?或者有什么机制可以防止10个线程被阻塞?

在 WCF 中,您可以为 WCF 调用创建 Begin 和 End 方法以使其异步。这是否意味着当我调用这个异步方法时,在客户端或服务器上的某个地方有一个线程在等待我?

我已经阅读了几篇关于实现异步的不同方法的文章,但这些文章没有解释幕后做了什么。

更新

我提出了更具体的问题,因为我对 .NET 更感兴趣。 MSDN 描述的异步模式.

更新 2

我修改了这个问题,使其更具体地使同步调用异步。

最佳答案

.NET框架中,实现异步操作的方法有很多种:使用线程、线程池、BeginXxx 和 EndXxx 方法、基于事件的 APM 或基于任务的 APM。

每个异步模式都有自己的内部实现,所有这些异步编程模型都在此博客 中进行了解释。 article ,包括传统的 BeginXxx 和 EndXxx 异步模式。

以下是所有异步模式的摘要,以供快速引用:
Async Summary:

此外,Jeffrey Richter 还解释了 CLR Asynchronous Programming Model在 MSDN 杂志很好。

关于.net - 在 C# .NET 中,异步操作是否一定会创建一个阻塞线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9582165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com