/** {@inheritDoc} */ @Override public Object call() throws Exception { or = block.templateReader.newReader(); try { DeltaWindow w; for (;;) { synchronized (this) { if (slices.isEmpty()) { break; } w = initWindow(slices.removeFirst()); } runWindow(w); } while ((w = block.stealWork(this)) != null) { runWindow(w); } } finally { block.pm.endWorker(); or.close(); or = null; } return null; }
synchronized DeltaWindow stealWork(DeltaTask forThread) { for (;;) { DeltaTask maxTask = null; Slice maxSlice = null; int maxWork = 0; for (DeltaTask task : tasks) { Slice s = task.remaining(); if (s != null && maxWork < s.size()) { maxTask = task; maxSlice = s; maxWork = s.size(); } } if (maxTask == null) { return null; } if (maxTask.tryStealWork(maxSlice)) { return forThread.initWindow(maxSlice); } } }
public Object call() throws Exception { or = block.templateReader.newReader(); try { DeltaWindow w; for (;;) { synchronized (this) { if (slices.isEmpty()) { break; } w = initWindow(slices.removeFirst()); } runWindow(w); } while ((w = block.stealWork(this)) != null) { runWindow(w); } } finally { block.pm.endWorker(); or.close(); or = null; } return null; }
/** {@inheritDoc} */ @Override public Object call() throws Exception { or = block.templateReader.newReader(); try { DeltaWindow w; for (;;) { synchronized (this) { if (slices.isEmpty()) { break; } w = initWindow(slices.removeFirst()); } runWindow(w); } while ((w = block.stealWork(this)) != null) { runWindow(w); } } finally { block.pm.endWorker(); or.close(); or = null; } return null; }
synchronized DeltaWindow stealWork(DeltaTask forThread) { for (;;) { DeltaTask maxTask = null; Slice maxSlice = null; int maxWork = 0; for (DeltaTask task : tasks) { Slice s = task.remaining(); if (s != null && maxWork < s.size()) { maxTask = task; maxSlice = s; maxWork = s.size(); } } if (maxTask == null) { return null; } if (maxTask.tryStealWork(maxSlice)) { return forThread.initWindow(maxSlice); } } }
synchronized DeltaWindow stealWork(DeltaTask forThread) { for (;;) { DeltaTask maxTask = null; Slice maxSlice = null; int maxWork = 0; for (DeltaTask task : tasks) { Slice s = task.remaining(); if (s != null && maxWork < s.size()) { maxTask = task; maxSlice = s; maxWork = s.size(); } } if (maxTask == null) { return null; } if (maxTask.tryStealWork(maxSlice)) { return forThread.initWindow(maxSlice); } } }