[英]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.