正确理解任务
本文关键字:任务 正确理解 | 更新日期: 2023-09-27 18:35:43
冒着问一个愚蠢问题的风险(如果我的同龄人认为这是一个愚蠢的问题,我会自愿自己删除这个问题)。
我有一个 C# 桌面应用程序。
我使用 WCF 服务将数据上载到我的服务器。
我正在尝试使用任务。
此代码调用我的 Web 服务...
Task t = Task.Run(() => { wcf.UploadMotionDynamicRaw(bytes); });
我正在对这行代码进行压力测试。
我在 1 秒内调用它多次,持续 X 时间。
如果互联网因某种原因变慢,这会"淹没"我的路由器吗?
我有点猜测会是这样...
那么,在再次调用任务之前,如何测试任务是否已完成呢? 这样做时,额外的管道是否会减慢我使用 Task 的速度提升?
最后,使用任务是否使用多个内核?
如果互联网速度很慢,这会"淹没"我的路由器吗 原因?
这取决于您要上传的文件的大小和连接速度。要弄清楚这一点,只需运行.
那么,在调用任务之前,如何测试任务是否已完成 再?
您可以使用 Task.ContinueWith 函数(任何可用的重载)来"捕获"任务完成并运行其他方法,也可能是递归。
这样做会减慢我的速度提升 使用任务?
这取决于工作负载、处理器和预期的计时。因此,换句话说,运行它进行测量,对此没有可能的通用答案。
使用任务是否使用多个内核?
是的,只要它发现这是可能的。一个接一个地运行单个任务不会将单个功能工作分散在多个内核上。为此,您需要使用 Parallel.For 和类似的工件。 同样,.NET 不提供 SIMD 编排机制,因此不能保证它会在多核上运行,但很可能会。