c# – 多线程是否等于CPU?
我有一小部分我想要处理的大型文件,这让我想到了……
在C#中,我正在考虑使用TPL的Parallel.ForEach来利用现代多核CPU,但我的问题更多的是一个假设的角色; 在实用中使用多线程是否意味着并行加载文件需要更长的时间(使用尽可能多的CPU内核),而不是按顺序加载每个文件(但可能使用的CPU利用率较低)? 或以另一种方式(: 多线程有什么意义?更多任务并行但速度较慢,而不是一次将所有计算资源集中在一项任务上? 解决方法
你问过多个问题,所以我把我的回答分解为多个答案:
>多线程可能对加载速度没有影响,具体取决于加载过程中的瓶颈.如果您从磁盘或数据库加载大量数据,I / O可能是您的限制因素.另一方面,如果“加载”涉及使用某些数据执行大量CPU工作,则可能会因使用多线程而加快速度.>一般来说,您无法将“所有计算资源都集中在一项任务上”.一些多核处理器能够超频单个内核以换取禁用其他内核,但这种速度提升并不等于使用多线程/多处理充分利用所有内核所带来的潜在性能优势.换句话说,它是不对称的 – 如果你有一个4核1Ghz CPU,它将无法将单个核心一直超频到4ghz以换取禁用其他核心.事实上,这就是这个行业首先走向多核的原因 – 至少目前我们已经达到了制造单CPU运行速度的限制,所以我们已经走了添加更多CPU的道路.>多线程有两个原因.首先,您希望任务同时运行,因为两者都希望能够同时发生 – 例如你希望你的GUI在进行其他工作时继续响应点击或键盘按下(事件循环是实现此目的的另一种方式).第二是利用多个内核来提升性能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |