|
@@ -1,12 +1,12 @@
|
|
using Invercargill.DataStructures;
|
|
using Invercargill.DataStructures;
|
|
namespace Invercargill.Modifiers {
|
|
namespace Invercargill.Modifiers {
|
|
|
|
|
|
- public class Parallel<TIn, TOut> : Enumerable<TOut>{
|
|
|
|
|
|
+ public class ParallelTransform<TIn, TOut> : Enumerable<TOut>{
|
|
private TransformDelegate<TIn, TOut> transform_func;
|
|
private TransformDelegate<TIn, TOut> transform_func;
|
|
private Enumerable<TIn> input;
|
|
private Enumerable<TIn> input;
|
|
private int workers;
|
|
private int workers;
|
|
|
|
|
|
- public Parallel(Enumerable<TIn> input, owned TransformDelegate<TIn, TOut> transform, int workers) {
|
|
|
|
|
|
+ public ParallelTransform(Enumerable<TIn> input, owned TransformDelegate<TIn, TOut> transform, int workers) {
|
|
this.input = input;
|
|
this.input = input;
|
|
this.workers = workers;
|
|
this.workers = workers;
|
|
transform_func = (owned)transform;
|
|
transform_func = (owned)transform;
|
|
@@ -21,11 +21,11 @@ namespace Invercargill.Modifiers {
|
|
}
|
|
}
|
|
|
|
|
|
public override Tracker<TOut> get_tracker() {
|
|
public override Tracker<TOut> get_tracker() {
|
|
- return new ParallelTracker<TIn, TOut>(i => transform_func(i), workers, input.get_tracker());
|
|
|
|
|
|
+ return new ParallelTransformTracker<TIn, TOut>(i => transform_func(i), workers, input.get_tracker());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- private class ParallelTracker<TIn, TOut> : Tracker<TOut> {
|
|
|
|
|
|
+ private class ParallelTransformTracker<TIn, TOut> : Tracker<TOut> {
|
|
|
|
|
|
private Fifo<TOut> queue;
|
|
private Fifo<TOut> queue;
|
|
private Tracker<TOut> queue_tracker;
|
|
private Tracker<TOut> queue_tracker;
|
|
@@ -33,7 +33,7 @@ namespace Invercargill.Modifiers {
|
|
private Tracker<TIn> input_tracker;
|
|
private Tracker<TIn> input_tracker;
|
|
private int remaining_workers;
|
|
private int remaining_workers;
|
|
|
|
|
|
- public ParallelTracker(owned TransformDelegate<TIn, TOut> transform, int workers, Tracker<TIn> input) {
|
|
|
|
|
|
+ public ParallelTransformTracker(owned TransformDelegate<TIn, TOut> transform, int workers, Tracker<TIn> input) {
|
|
input_tracker = input;
|
|
input_tracker = input;
|
|
queue = new Fifo<TOut>();
|
|
queue = new Fifo<TOut>();
|
|
queue_tracker = queue.get_tracker();
|
|
queue_tracker = queue.get_tracker();
|