在C#中,我正在考虑使用TPL的Parallel.ForEach来利用现代多核cpu,但我的问题更多的是一个假设的角色;
在实用中使用多线程是否意味着并行加载文件需要更长的时间(使用尽可能多的cpu内核),而不是按顺序加载每个文件(但可能使用的cpu利用率较低)?
或以另一种方式(:
多线程有什么意义?更多任务并行但速度较慢,而不是一次将所有计算资源集中在一项任务上?
解决方法 你问过多个问题,所以我把我的回答分解为多个答案:>多线程可能对加载速度没有影响,具体取决于加载过程中的瓶颈.如果您从磁盘或数据库加载大量数据,I / O可能是您的限制因素.另一方面,如果“加载”涉及使用某些数据执行大量cpu工作,则可能会因使用多线程而加快速度.>一般来说,您无法将“所有计算资源都集中在一项任务上”.一些多核处理器能够超频单个内核以换取禁用其他内核,但这种速度提升并不等于使用多线程/多处理充分利用所有内核所带来的潜在性能优势.换句话说,它是不对称的 – 如果你有一个4核1Ghz cpu,它将无法将单个核心一直超频到4ghz以换取禁用其他核心.事实上,这就是这个行业首先走向多核的原因 – 至少目前我们已经达到了制造单cpu运行速度的限制,所以我们已经走了添加更多cpu的道路.>多线程有两个原因.首先,您希望任务同时运行,因为两者都希望能够同时发生 – 例如你希望你的GUI在进行其他工作时继续响应点击或键盘按下(事件循环是实现此目的的另一种方式).第二是利用多个内核来提升性能.
总结以上是内存溢出为你收集整理的c# – 多线程是否等于CPU?全部内容,希望文章能够帮你解决c# – 多线程是否等于CPU?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)