Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
Qué es el paralelismo
Paralelismo es la ejecución simultánea de dos o más tareas. Se considera una
propiedad del hardware, ya que requiere recursos físicos para ejecutar cada
tarea simultáneamente, y su objetivo se basa en realizar una tarea en el menor
tiempo posible.
Paralelismo NO es concurrencia
El término paralelismo suele confundirse en numerosas ocasiones con el
concepto de concurrencia. Ambos se basan en la programación multitarea, pero
no son lo mismo.
function mergesort(a)
var left as array = a[0] ... a[n/2]
var right as array = a[n/2+1] ... a[n]
left = mergesort(left)
right = mergesort(right)
return merge(left, right)
end function
function merge(left,right)
var result as array
while length(left) > 0 and length(right) > 0
if first(left) ≤ first(right)
append first(left) to result
left = rest(left)
else
append first(right) to result
right = rest(right)
if length(left) > 0
append rest(left) to result
if length(right) > 0
append rest(right) to result
return result
end function
private void merge(Integer[] a, Integer[] helper, int lo, int mid, int hi) {
/* code */
}
}
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.RecursiveAction;
@Override
protected void compute() {
if (lo < hi) {
int mid = lo + (hi-lo)/2;
MergeSortTask left = new MergeSortTask (a, helper, lo, mid);
MergeSortTask right = new MergeSortTask (a, helper, mid+1, hi);
invokeAll(left, right);
merge(this.a, this.helper, this.lo, mid, this.hi);
} else {
return;
}
}
private void merge(Integer[] a, Integer[] helper, int lo, int mid, int hi) {
/* code */
}
}
}