gpt4 book ai didi

.net - 使用 .Net Parallel Extensions (Parallel.Invoke) 进行多个异步调用?

转载 作者:行者123 更新时间:2023-12-04 18:52:44 25 4
gpt4 key购买 nike

目前,我有一段代码需要对各种提供程序进行大约 7 次 Web 服务调用以获取数据。每个调用都需要几秒钟的时间来执行,所以我想并行运行它们以加快速度。

我已经将我的 7 个调用封装在一个 Parallel.Invoke 中,它非常适契约(Contract)时运行几件事情,但是在 2 核服务器上,它一次只能执行 2 个,每个核心一个。由于我所做的只是等待 Web 服务调用返回,因此我希望它获取所有 7 项并等待它们返回。

没有办法做到这一点吗?或者也许我的方法是错误的?也许我需要创建对 Web 服务的异步调用?但是,如何在继续之前等待他们全部回来?

最佳答案

but on a 2 core server, it will only execute 2 at a time, one per core



我会质疑这一点 - Parallel.Invoke 通常会比系统中的内核运行更多的任务。

话虽如此,如果您使用异步方法调用调用,我建议使用 Task.Factory.FromAsync(...)生成您的七个不同的任务。

这提供了在任务执行时做其他工作的灵活性,然后调用 Task.WaitAll (或 Task.WaitAny )当您决定使用结果时。

另一方面,Parallel.Invoke 将始终阻塞,直到所有七个完成。

关于.net - 使用 .Net Parallel Extensions (Parallel.Invoke) 进行多个异步调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3713523/

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