Root node for FJRemoveAll. Spawns subtasks and shifts elements as indices become available, bypassing index array creation when offsets are known. This differs from SelectAll mainly in that data movement is all done by the driver rather than in a second parallel pass.
Constructor and description |
---|
PAS.FJRemoveAllDriver
(AbstractParallelAnyArray pap, int lo, int hi) |
Type | Name and description |
---|---|
void |
compute() |
static int |
inorderMove(FJRemoveAll t, int index) Inorder traversal to move indexed elements across reachable nodes. |
Methods inherited from class | Name |
---|---|
class java.util.concurrent.RecursiveAction |
java.util.concurrent.RecursiveAction#getRawResult(), java.util.concurrent.RecursiveAction#getRawResult(), java.util.concurrent.RecursiveAction#invoke(), java.util.concurrent.RecursiveAction#get(), java.util.concurrent.RecursiveAction#get(long, java.util.concurrent.TimeUnit), java.util.concurrent.RecursiveAction#join(), java.util.concurrent.RecursiveAction#getException(), java.util.concurrent.RecursiveAction#reinitialize(), java.util.concurrent.RecursiveAction#getPool(), java.util.concurrent.RecursiveAction#isCancelled(), java.util.concurrent.RecursiveAction#cancel(boolean), java.util.concurrent.RecursiveAction#invokeAll(java.util.concurrent.ForkJoinTask, java.util.concurrent.ForkJoinTask), java.util.concurrent.RecursiveAction#invokeAll([Ljava.util.concurrent.ForkJoinTask;), java.util.concurrent.RecursiveAction#invokeAll(java.util.Collection), java.util.concurrent.RecursiveAction#complete(java.lang.Object), java.util.concurrent.RecursiveAction#isDone(), java.util.concurrent.RecursiveAction#getQueuedTaskCount(), java.util.concurrent.RecursiveAction#getSurplusQueuedTaskCount(), java.util.concurrent.RecursiveAction#quietlyJoin(), java.util.concurrent.RecursiveAction#adapt(java.lang.Runnable, java.lang.Object), java.util.concurrent.RecursiveAction#adapt(java.lang.Runnable), java.util.concurrent.RecursiveAction#adapt(java.util.concurrent.Callable), java.util.concurrent.RecursiveAction#compareAndSetForkJoinTaskTag(short, short), java.util.concurrent.RecursiveAction#completeExceptionally(java.lang.Throwable), java.util.concurrent.RecursiveAction#getForkJoinTaskTag(), java.util.concurrent.RecursiveAction#helpQuiesce(), java.util.concurrent.RecursiveAction#inForkJoinPool(), java.util.concurrent.RecursiveAction#isCompletedAbnormally(), java.util.concurrent.RecursiveAction#isCompletedNormally(), java.util.concurrent.RecursiveAction#quietlyComplete(), java.util.concurrent.RecursiveAction#quietlyInvoke(), java.util.concurrent.RecursiveAction#setForkJoinTaskTag(short), java.util.concurrent.RecursiveAction#tryUnfork(), java.util.concurrent.RecursiveAction#fork(), java.util.concurrent.RecursiveAction#wait(), java.util.concurrent.RecursiveAction#wait(long, int), java.util.concurrent.RecursiveAction#wait(long), java.util.concurrent.RecursiveAction#equals(java.lang.Object), java.util.concurrent.RecursiveAction#toString(), java.util.concurrent.RecursiveAction#hashCode(), java.util.concurrent.RecursiveAction#getClass(), java.util.concurrent.RecursiveAction#notify(), java.util.concurrent.RecursiveAction#notifyAll() |
class java.util.concurrent.ForkJoinTask |
java.util.concurrent.ForkJoinTask#invoke(), java.util.concurrent.ForkJoinTask#get(), java.util.concurrent.ForkJoinTask#get(long, java.util.concurrent.TimeUnit), java.util.concurrent.ForkJoinTask#join(), java.util.concurrent.ForkJoinTask#getException(), java.util.concurrent.ForkJoinTask#reinitialize(), java.util.concurrent.ForkJoinTask#getPool(), java.util.concurrent.ForkJoinTask#isCancelled(), java.util.concurrent.ForkJoinTask#cancel(boolean), java.util.concurrent.ForkJoinTask#invokeAll(java.util.concurrent.ForkJoinTask, java.util.concurrent.ForkJoinTask), java.util.concurrent.ForkJoinTask#invokeAll([Ljava.util.concurrent.ForkJoinTask;), java.util.concurrent.ForkJoinTask#invokeAll(java.util.Collection), java.util.concurrent.ForkJoinTask#complete(java.lang.Object), java.util.concurrent.ForkJoinTask#isDone(), java.util.concurrent.ForkJoinTask#getQueuedTaskCount(), java.util.concurrent.ForkJoinTask#getSurplusQueuedTaskCount(), java.util.concurrent.ForkJoinTask#quietlyJoin(), java.util.concurrent.ForkJoinTask#adapt(java.lang.Runnable, java.lang.Object), java.util.concurrent.ForkJoinTask#adapt(java.lang.Runnable), java.util.concurrent.ForkJoinTask#adapt(java.util.concurrent.Callable), java.util.concurrent.ForkJoinTask#compareAndSetForkJoinTaskTag(short, short), java.util.concurrent.ForkJoinTask#completeExceptionally(java.lang.Throwable), java.util.concurrent.ForkJoinTask#getForkJoinTaskTag(), java.util.concurrent.ForkJoinTask#getRawResult(), java.util.concurrent.ForkJoinTask#helpQuiesce(), java.util.concurrent.ForkJoinTask#inForkJoinPool(), java.util.concurrent.ForkJoinTask#isCompletedAbnormally(), java.util.concurrent.ForkJoinTask#isCompletedNormally(), java.util.concurrent.ForkJoinTask#quietlyComplete(), java.util.concurrent.ForkJoinTask#quietlyInvoke(), java.util.concurrent.ForkJoinTask#setForkJoinTaskTag(short), java.util.concurrent.ForkJoinTask#tryUnfork(), java.util.concurrent.ForkJoinTask#fork(), java.util.concurrent.ForkJoinTask#wait(), java.util.concurrent.ForkJoinTask#wait(long, int), java.util.concurrent.ForkJoinTask#wait(long), java.util.concurrent.ForkJoinTask#equals(java.lang.Object), java.util.concurrent.ForkJoinTask#toString(), java.util.concurrent.ForkJoinTask#hashCode(), java.util.concurrent.ForkJoinTask#getClass(), java.util.concurrent.ForkJoinTask#notify(), java.util.concurrent.ForkJoinTask#notifyAll() |
Inorder traversal to move indexed elements across reachable nodes. This guarantees that element shifts don't overwrite those still being used by active subtasks.
Copyright © 2008–2014 Václav Pech. All Rights Reserved.