concurrency - 并发编程作用于数组中的每个元素

标签 concurrency parallel-processing

我有一个与并行编程相关的问题。如果我有一个程序作用于数组的每一个元素,为什么使用所有可用的处理器可能不是有利的?

我当时在想,可能是因为设置和管理多个线程的开销很大,或者数组大小不适合并发解决方案。谁能想到别的?

最佳答案

一些处理器可能已经在忙于处理重要的事情,或者您可能希望保留备用容量以防它们需要快速响应新的工作负载。例如,在具有 8 个处理器的桌面系统中,您可能希望保留 1 个空闲以保持 UI 响应,同时在其他线程上分配 7 个“批处理”线程。在非 UI 系统中,您可能仍希望保持一个或多个内核监听操作系统中断或执行网络 IO。

一个特别令人沮丧的例子是在你的所有内核上开始并行计算,发现你应该在启动它之前调整一个参数,并且无法中断计算,因为没有剩余的计算能力来允许 UI响应您的“取消”按钮。

关于concurrency - 并发编程作用于数组中的每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23699137/

相关文章:

python - 在 concurrent.futures 中获取异常的原始行号

c++ - tbb:concurrent_hash_map<K,V>:英特尔线程构建模块 (TBB) 的示例代码

parallel-processing - Julia 中的进程数

matlab - 如何并行运行 MATLAB 脚本(即在多个内核上且不使用 parfor)?

c - OpenMP 和 GSL RNG - 性能问题 - 4 线程实现比纯顺序线程(四核 CPU)慢 10 倍

c# - 2 WCF 服务和 c# 线程

java - AtomicInteger 的 check-then-act 用法是否需要同步?

multithreading - 读写互斥锁/锁如何工作?

asynchronous - 使用 F# 和 Task<T> 的循环并发算法

algorithm - 多个 CPU 的快速和合并排序