如何解决.NET是否同时使用并发或并行性?
我知道并行性和并发性之间的区别。并发意味着处理器以非常快的速度在线程之间切换,这使其看起来像是在并行运行,因此即使使用单核处理器,您也可以同时完成事情。并行性意味着每个线程都在不同的内核上运行。
.NET是否使用并行性或并发性?流量是多少? cpu是否检查线程是否多于内核,如果这样,它将导致内核具有多个线程,从而使程序并行和并发?
如果我使用任务并行库会发生什么?该名称与之平行,所以它是平行的,还是两者的组合或?
这个问题对我来说不是很清楚,我一直在怀疑,也不知道这一切如何工作。
解决方法
您对并行和并行的定义有些奇怪。更好的定义可能来自How to articulate the difference between asynchronous and parallel programming
当您异步运行某些东西时,它意味着它是非阻塞的,您无需等待它完成并继续进行其他操作即可执行它。并行是指同时并行运行多个事物。当您可以将任务分为独立的工作时,并行性会很好地发挥作用。
您可以与.Net并行运行事物,最简单的方法是使用Parallel.For。
.Net还允许使用异步功能。 .Net API中的大多数异步功能应映射到OS中的异步功能(在Windows上,有时称为重叠IO)。这允许处理器在等待缓慢的磁盘或网络数据包时执行其他操作。使用异步功能的现代方法是使用async/await。
不能保证在使用并行或异步编程时,任何东西都可以并发或以任何特定顺序运行,这取决于操作系统和/或框架。在大多数情况下,它将运行与逻辑处理器一样多的线程。我建议阅读Parallel Processing,Concurrency,and Async Programming in .NET,以获取对该主题的介绍。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。