繁体   English   中英

.NET 是否使用并发或并行或两者兼而有之? [关闭]

[英]Does .NET make use of concurrency or parallelism or both? [closed]

我知道并行性和并发性之间的区别。 并发意味着处理器以非常快的速度在线程之间切换,这使得它看起来像是并行运行,因此即使使用单核处理器,您也可以同时实现事物。 而并行性意味着每个线程都在不同的核心上运行。

.NET 使用并行还是并发? 什么是流量? cpu 是否检查线程数是否多于内核数,如果是这种情况,它将导致内核具有多个线程,从而使程序并行和并发?

如果我使用任务并行库会发生什么? 这个名字在里面是平行的,那么它是平行的还是两者的结合?

这个主题对我来说不是很清楚,我一直在怀疑,不知道这一切是如何运作的。

您对并发与并行的定义有些奇怪。 更好的定义可能来自How to articulate the difference between asynchronous and parallel programming

当您异步运行某些东西时,这意味着它是非阻塞的,您无需等待它完成即可执行它并继续执行其他操作。 并行意味着同时并行运行多个事物。 当您可以将任务分成独立的工作部分时,并行性工作得很好。

您可以与 .Net 并行运行,最简单的方法是使用Parallel.For

.Net 还允许使用异步函数。 .Net API 中的大多数异步函数应该映射到操作系统中的异步函数,(在 Windows 上这有时被称为重叠 IO)。 这允许处理器在等待慢速磁盘或网络数据包时做其他事情。 使用异步函数的现代方法是使用async/await

在使用并行或异步编程时,不能保证任何东西都会并发或以任何特定顺序运行,这取决于操作系统和/或框架。 在大多数情况下,这将运行与逻辑处理器一样多的线程。 我建议阅读.NET中的并行处理、并发和异步编程以了解该主题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM