Trying to build a simple Pipe and FilterIs there a simple, elegant way to define singletons?Concatenate NULL and string in Linq to entities queryTry-catch speeding up my code?Can use interfaces in creating my models in Entity Framework Codefirst?NHibernate rises NHibernate.HibernateException : Could not find named connectionPopulating EXT JS Store in a EXT form PanelWhat is the best way to load data to the following structure from database?DevExpress MVC GridView-Missing values after update when not all properties added to columnsStoring TextBox input to an arrayDynamic “pipes and filters” or “decorator”
Should I disclose a colleague's illness (that I should not know) when others badmouth him
How to use Palladio font in text body but Computer Modern for Equations?
Does the unit of measure matter when you are solving for the diameter of a circumference?
Plot twist where the antagonist wins
Why do Ryanair allow me to book connecting itineraries through a third party, but not through their own website?
What are the real benefits of using Salesforce DX?
Employer demanding to see degree after poor code review
Is there a way to make it so the cursor is included when I prtscr key?
Is CD audio quality good enough?
Construct a word ladder
Were pens caps holes designed to prevent death by suffocation if swallowed?
Is the field of q-series 'dead'?
In general, would I need to season a meat when making a sauce?
Which is the common name of Mind Flayers?
Would Brexit have gone ahead by now if Gina Miller had not forced the Government to involve Parliament?
Would jet fuel for an F-16 or F-35 be producible during WW2?
When and what was the first 3D acceleration device ever released?
What does this symbol on the box of power supply mean?
Is it possible to play as a necromancer skeleton?
Simple fuzz pedal using breadboard
Why were helmets and other body armour not commonplace in the 1800s?
Compactness of finite sets
Computing the matrix powers of a non-diagonalizable matrix
Are these reasonable traits for someone with autism?
Trying to build a simple Pipe and Filter
Is there a simple, elegant way to define singletons?Concatenate NULL and string in Linq to entities queryTry-catch speeding up my code?Can use interfaces in creating my models in Entity Framework Codefirst?NHibernate rises NHibernate.HibernateException : Could not find named connectionPopulating EXT JS Store in a EXT form PanelWhat is the best way to load data to the following structure from database?DevExpress MVC GridView-Missing values after update when not all properties added to columnsStoring TextBox input to an arrayDynamic “pipes and filters” or “decorator”
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I am trying to implement the Pipe and Filter pattern integrating TPL Dataflow within it. I am having issues where not all my results are churned out. For example, i put 99999 items into the pipeline and only 85238 came out.
EmployeeModel.cs
public class EmployeeModel
public String FirstName get; set;
public String LastName get; set;
public String FullName get; set;
public override String ToString()
return $"FirstName: FirstNamenLastName: LastNamenFullName: FullNamen";
IFilter.cs
public interface IFilter<T>
T Execute(T input);
AbstractParallelFilter.cs
public abstract class AbstractParallelFilter<T> : IFilter<T>
public AbstractParallelFilter()
TransformBlock = new TransformBlock<T, T>(new Func<T, T>(Execute), new ExecutionDataflowBlockOptions()
BoundedCapacity = DataflowBlockOptions.Unbounded,
MaxDegreeOfParallelism = Environment.ProcessorCount
);
public abstract T Execute(T input);
internal TransformBlock<T, T> TransformBlock get; private set;
IParallelPipeline.cs
public interface IParallelPipeline<T>
IParallelPipeline<T> Register(AbstractParallelFilter<T> filter);
IParallelPipeline<T> CompleteRegisteration();
IParallelPipeline<T> Process(T input);
Task CompleteProcessing();
ConcurrentBag<T> Results get; set;
AbstractParallelPipeline.cs
public abstract class AbstractParallelPipeline<T>: IParallelPipeline<T>
public AbstractParallelPipeline()
filters = new List<AbstractParallelFilter<T>>();
Results = new ConcurrentBag<T>();
public IParallelPipeline<T> Register(AbstractParallelFilter<T> filter)
filters.Add(filter);
return this;
public abstract IParallelPipeline<T> Process(T input);
public Task CompleteProcessing()
if (filters.Count == 0)
throw new Exception("No filters have been registered");
filters.First().TransformBlock.Complete();
return filters.Last().TransformBlock.Completion;
public IParallelPipeline<T> CompleteRegisteration()
if (filters.Count < 2)
return this;
else
for (int i = filters.Count - 2; i >= 0; i--)
filters[i].TransformBlock.LinkTo(filters[i + 1].TransformBlock, new DataflowLinkOptions() PropagateCompletion = true );
ActionBlock<T> dumpBlock = new ActionBlock<T>(x => Results.Add(x));
filters.Last().TransformBlock.LinkTo(dumpBlock, new DataflowLinkOptions() PropagateCompletion = true );
return this;
public IList<AbstractParallelFilter<T>> filters;
public ConcurrentBag<T> Results get; set;
ParallelPipeline.cs
public class ParallelPipeline<T> : AbstractParallelPipeline<T>
public override IParallelPipeline<T> Process(T input)
filters.First().TransformBlock.Post(input);
return this;
Program.cs
class Program
static void Main(string[] args)
List<EmployeeModel> employeeModels = new List<EmployeeModel>();
int count = 99999;
for (int i = 0; i < count; i++)
EmployeeModel employee = new EmployeeModel()
FirstName = NameGenerator.GenerateFirstName(Gender.Female),
LastName = NameGenerator.GenerateLastName()
;
employeeModels.Add(employee);
IParallelPipeline<EmployeeModel> parallelPipeline = new ParallelPipeline<EmployeeModel>()
.Register(new ParallelFirstNameToUpperFilter())
.Register(new ParallelLastNameToUpperFilter())
.Register(new ParallelFullNameConcatFilter())
.CompleteRegisteration();
for (int i = 0; i < count; i++)
parallelPipeline.Process(employeeModels[i]);
parallelPipeline
.CompleteProcessing()
.Wait();
Console.WriteLine(parallelPipeline.Results.Count);
Console.Read();
c# design-patterns task-parallel-library
add a comment |
I am trying to implement the Pipe and Filter pattern integrating TPL Dataflow within it. I am having issues where not all my results are churned out. For example, i put 99999 items into the pipeline and only 85238 came out.
EmployeeModel.cs
public class EmployeeModel
public String FirstName get; set;
public String LastName get; set;
public String FullName get; set;
public override String ToString()
return $"FirstName: FirstNamenLastName: LastNamenFullName: FullNamen";
IFilter.cs
public interface IFilter<T>
T Execute(T input);
AbstractParallelFilter.cs
public abstract class AbstractParallelFilter<T> : IFilter<T>
public AbstractParallelFilter()
TransformBlock = new TransformBlock<T, T>(new Func<T, T>(Execute), new ExecutionDataflowBlockOptions()
BoundedCapacity = DataflowBlockOptions.Unbounded,
MaxDegreeOfParallelism = Environment.ProcessorCount
);
public abstract T Execute(T input);
internal TransformBlock<T, T> TransformBlock get; private set;
IParallelPipeline.cs
public interface IParallelPipeline<T>
IParallelPipeline<T> Register(AbstractParallelFilter<T> filter);
IParallelPipeline<T> CompleteRegisteration();
IParallelPipeline<T> Process(T input);
Task CompleteProcessing();
ConcurrentBag<T> Results get; set;
AbstractParallelPipeline.cs
public abstract class AbstractParallelPipeline<T>: IParallelPipeline<T>
public AbstractParallelPipeline()
filters = new List<AbstractParallelFilter<T>>();
Results = new ConcurrentBag<T>();
public IParallelPipeline<T> Register(AbstractParallelFilter<T> filter)
filters.Add(filter);
return this;
public abstract IParallelPipeline<T> Process(T input);
public Task CompleteProcessing()
if (filters.Count == 0)
throw new Exception("No filters have been registered");
filters.First().TransformBlock.Complete();
return filters.Last().TransformBlock.Completion;
public IParallelPipeline<T> CompleteRegisteration()
if (filters.Count < 2)
return this;
else
for (int i = filters.Count - 2; i >= 0; i--)
filters[i].TransformBlock.LinkTo(filters[i + 1].TransformBlock, new DataflowLinkOptions() PropagateCompletion = true );
ActionBlock<T> dumpBlock = new ActionBlock<T>(x => Results.Add(x));
filters.Last().TransformBlock.LinkTo(dumpBlock, new DataflowLinkOptions() PropagateCompletion = true );
return this;
public IList<AbstractParallelFilter<T>> filters;
public ConcurrentBag<T> Results get; set;
ParallelPipeline.cs
public class ParallelPipeline<T> : AbstractParallelPipeline<T>
public override IParallelPipeline<T> Process(T input)
filters.First().TransformBlock.Post(input);
return this;
Program.cs
class Program
static void Main(string[] args)
List<EmployeeModel> employeeModels = new List<EmployeeModel>();
int count = 99999;
for (int i = 0; i < count; i++)
EmployeeModel employee = new EmployeeModel()
FirstName = NameGenerator.GenerateFirstName(Gender.Female),
LastName = NameGenerator.GenerateLastName()
;
employeeModels.Add(employee);
IParallelPipeline<EmployeeModel> parallelPipeline = new ParallelPipeline<EmployeeModel>()
.Register(new ParallelFirstNameToUpperFilter())
.Register(new ParallelLastNameToUpperFilter())
.Register(new ParallelFullNameConcatFilter())
.CompleteRegisteration();
for (int i = 0; i < count; i++)
parallelPipeline.Process(employeeModels[i]);
parallelPipeline
.CompleteProcessing()
.Wait();
Console.WriteLine(parallelPipeline.Results.Count);
Console.Read();
c# design-patterns task-parallel-library
You are registering 3 filters inparallelPipeline
, what do they do? and what doesNameGenerator
do?
– Peter Bons
Mar 24 at 6:40
It just touppers() the property. I just narrowed down the problem. I need to threadsleep awhile before i enumerate the results. Seems like concurrentbag was not fully ready adding all the items to the list. Is there a way to know if concurrentbag is ready? Or is there a better data structure to use?
– RStyle
Mar 24 at 6:54
add a comment |
I am trying to implement the Pipe and Filter pattern integrating TPL Dataflow within it. I am having issues where not all my results are churned out. For example, i put 99999 items into the pipeline and only 85238 came out.
EmployeeModel.cs
public class EmployeeModel
public String FirstName get; set;
public String LastName get; set;
public String FullName get; set;
public override String ToString()
return $"FirstName: FirstNamenLastName: LastNamenFullName: FullNamen";
IFilter.cs
public interface IFilter<T>
T Execute(T input);
AbstractParallelFilter.cs
public abstract class AbstractParallelFilter<T> : IFilter<T>
public AbstractParallelFilter()
TransformBlock = new TransformBlock<T, T>(new Func<T, T>(Execute), new ExecutionDataflowBlockOptions()
BoundedCapacity = DataflowBlockOptions.Unbounded,
MaxDegreeOfParallelism = Environment.ProcessorCount
);
public abstract T Execute(T input);
internal TransformBlock<T, T> TransformBlock get; private set;
IParallelPipeline.cs
public interface IParallelPipeline<T>
IParallelPipeline<T> Register(AbstractParallelFilter<T> filter);
IParallelPipeline<T> CompleteRegisteration();
IParallelPipeline<T> Process(T input);
Task CompleteProcessing();
ConcurrentBag<T> Results get; set;
AbstractParallelPipeline.cs
public abstract class AbstractParallelPipeline<T>: IParallelPipeline<T>
public AbstractParallelPipeline()
filters = new List<AbstractParallelFilter<T>>();
Results = new ConcurrentBag<T>();
public IParallelPipeline<T> Register(AbstractParallelFilter<T> filter)
filters.Add(filter);
return this;
public abstract IParallelPipeline<T> Process(T input);
public Task CompleteProcessing()
if (filters.Count == 0)
throw new Exception("No filters have been registered");
filters.First().TransformBlock.Complete();
return filters.Last().TransformBlock.Completion;
public IParallelPipeline<T> CompleteRegisteration()
if (filters.Count < 2)
return this;
else
for (int i = filters.Count - 2; i >= 0; i--)
filters[i].TransformBlock.LinkTo(filters[i + 1].TransformBlock, new DataflowLinkOptions() PropagateCompletion = true );
ActionBlock<T> dumpBlock = new ActionBlock<T>(x => Results.Add(x));
filters.Last().TransformBlock.LinkTo(dumpBlock, new DataflowLinkOptions() PropagateCompletion = true );
return this;
public IList<AbstractParallelFilter<T>> filters;
public ConcurrentBag<T> Results get; set;
ParallelPipeline.cs
public class ParallelPipeline<T> : AbstractParallelPipeline<T>
public override IParallelPipeline<T> Process(T input)
filters.First().TransformBlock.Post(input);
return this;
Program.cs
class Program
static void Main(string[] args)
List<EmployeeModel> employeeModels = new List<EmployeeModel>();
int count = 99999;
for (int i = 0; i < count; i++)
EmployeeModel employee = new EmployeeModel()
FirstName = NameGenerator.GenerateFirstName(Gender.Female),
LastName = NameGenerator.GenerateLastName()
;
employeeModels.Add(employee);
IParallelPipeline<EmployeeModel> parallelPipeline = new ParallelPipeline<EmployeeModel>()
.Register(new ParallelFirstNameToUpperFilter())
.Register(new ParallelLastNameToUpperFilter())
.Register(new ParallelFullNameConcatFilter())
.CompleteRegisteration();
for (int i = 0; i < count; i++)
parallelPipeline.Process(employeeModels[i]);
parallelPipeline
.CompleteProcessing()
.Wait();
Console.WriteLine(parallelPipeline.Results.Count);
Console.Read();
c# design-patterns task-parallel-library
I am trying to implement the Pipe and Filter pattern integrating TPL Dataflow within it. I am having issues where not all my results are churned out. For example, i put 99999 items into the pipeline and only 85238 came out.
EmployeeModel.cs
public class EmployeeModel
public String FirstName get; set;
public String LastName get; set;
public String FullName get; set;
public override String ToString()
return $"FirstName: FirstNamenLastName: LastNamenFullName: FullNamen";
IFilter.cs
public interface IFilter<T>
T Execute(T input);
AbstractParallelFilter.cs
public abstract class AbstractParallelFilter<T> : IFilter<T>
public AbstractParallelFilter()
TransformBlock = new TransformBlock<T, T>(new Func<T, T>(Execute), new ExecutionDataflowBlockOptions()
BoundedCapacity = DataflowBlockOptions.Unbounded,
MaxDegreeOfParallelism = Environment.ProcessorCount
);
public abstract T Execute(T input);
internal TransformBlock<T, T> TransformBlock get; private set;
IParallelPipeline.cs
public interface IParallelPipeline<T>
IParallelPipeline<T> Register(AbstractParallelFilter<T> filter);
IParallelPipeline<T> CompleteRegisteration();
IParallelPipeline<T> Process(T input);
Task CompleteProcessing();
ConcurrentBag<T> Results get; set;
AbstractParallelPipeline.cs
public abstract class AbstractParallelPipeline<T>: IParallelPipeline<T>
public AbstractParallelPipeline()
filters = new List<AbstractParallelFilter<T>>();
Results = new ConcurrentBag<T>();
public IParallelPipeline<T> Register(AbstractParallelFilter<T> filter)
filters.Add(filter);
return this;
public abstract IParallelPipeline<T> Process(T input);
public Task CompleteProcessing()
if (filters.Count == 0)
throw new Exception("No filters have been registered");
filters.First().TransformBlock.Complete();
return filters.Last().TransformBlock.Completion;
public IParallelPipeline<T> CompleteRegisteration()
if (filters.Count < 2)
return this;
else
for (int i = filters.Count - 2; i >= 0; i--)
filters[i].TransformBlock.LinkTo(filters[i + 1].TransformBlock, new DataflowLinkOptions() PropagateCompletion = true );
ActionBlock<T> dumpBlock = new ActionBlock<T>(x => Results.Add(x));
filters.Last().TransformBlock.LinkTo(dumpBlock, new DataflowLinkOptions() PropagateCompletion = true );
return this;
public IList<AbstractParallelFilter<T>> filters;
public ConcurrentBag<T> Results get; set;
ParallelPipeline.cs
public class ParallelPipeline<T> : AbstractParallelPipeline<T>
public override IParallelPipeline<T> Process(T input)
filters.First().TransformBlock.Post(input);
return this;
Program.cs
class Program
static void Main(string[] args)
List<EmployeeModel> employeeModels = new List<EmployeeModel>();
int count = 99999;
for (int i = 0; i < count; i++)
EmployeeModel employee = new EmployeeModel()
FirstName = NameGenerator.GenerateFirstName(Gender.Female),
LastName = NameGenerator.GenerateLastName()
;
employeeModels.Add(employee);
IParallelPipeline<EmployeeModel> parallelPipeline = new ParallelPipeline<EmployeeModel>()
.Register(new ParallelFirstNameToUpperFilter())
.Register(new ParallelLastNameToUpperFilter())
.Register(new ParallelFullNameConcatFilter())
.CompleteRegisteration();
for (int i = 0; i < count; i++)
parallelPipeline.Process(employeeModels[i]);
parallelPipeline
.CompleteProcessing()
.Wait();
Console.WriteLine(parallelPipeline.Results.Count);
Console.Read();
c# design-patterns task-parallel-library
c# design-patterns task-parallel-library
asked Mar 24 at 5:39
RStyleRStyle
439623
439623
You are registering 3 filters inparallelPipeline
, what do they do? and what doesNameGenerator
do?
– Peter Bons
Mar 24 at 6:40
It just touppers() the property. I just narrowed down the problem. I need to threadsleep awhile before i enumerate the results. Seems like concurrentbag was not fully ready adding all the items to the list. Is there a way to know if concurrentbag is ready? Or is there a better data structure to use?
– RStyle
Mar 24 at 6:54
add a comment |
You are registering 3 filters inparallelPipeline
, what do they do? and what doesNameGenerator
do?
– Peter Bons
Mar 24 at 6:40
It just touppers() the property. I just narrowed down the problem. I need to threadsleep awhile before i enumerate the results. Seems like concurrentbag was not fully ready adding all the items to the list. Is there a way to know if concurrentbag is ready? Or is there a better data structure to use?
– RStyle
Mar 24 at 6:54
You are registering 3 filters in
parallelPipeline
, what do they do? and what does NameGenerator
do?– Peter Bons
Mar 24 at 6:40
You are registering 3 filters in
parallelPipeline
, what do they do? and what does NameGenerator
do?– Peter Bons
Mar 24 at 6:40
It just touppers() the property. I just narrowed down the problem. I need to threadsleep awhile before i enumerate the results. Seems like concurrentbag was not fully ready adding all the items to the list. Is there a way to know if concurrentbag is ready? Or is there a better data structure to use?
– RStyle
Mar 24 at 6:54
It just touppers() the property. I just narrowed down the problem. I need to threadsleep awhile before i enumerate the results. Seems like concurrentbag was not fully ready adding all the items to the list. Is there a way to know if concurrentbag is ready? Or is there a better data structure to use?
– RStyle
Mar 24 at 6:54
add a comment |
1 Answer
1
active
oldest
votes
Ok found the newbie bug, during CompleteProcessing(), I need to return my ActionBlock instead of my TransformBlock as the ActionBlock is the last block.
Yeah, just wanted to write that as the answer. Hard to spot but nice you found it.
– Peter Bons
Mar 24 at 7:10
By the way, having just one filter messed things up. It did not complete at all
– Peter Bons
Mar 24 at 7:55
Oh yes! And I wonder why the synchronous one is faster than the parallel one. If you do know why let me know. Else will put up another question tomorrow haha. Thanks for your help man
– RStyle
Mar 24 at 9:36
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55321046%2ftrying-to-build-a-simple-pipe-and-filter%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Ok found the newbie bug, during CompleteProcessing(), I need to return my ActionBlock instead of my TransformBlock as the ActionBlock is the last block.
Yeah, just wanted to write that as the answer. Hard to spot but nice you found it.
– Peter Bons
Mar 24 at 7:10
By the way, having just one filter messed things up. It did not complete at all
– Peter Bons
Mar 24 at 7:55
Oh yes! And I wonder why the synchronous one is faster than the parallel one. If you do know why let me know. Else will put up another question tomorrow haha. Thanks for your help man
– RStyle
Mar 24 at 9:36
add a comment |
Ok found the newbie bug, during CompleteProcessing(), I need to return my ActionBlock instead of my TransformBlock as the ActionBlock is the last block.
Yeah, just wanted to write that as the answer. Hard to spot but nice you found it.
– Peter Bons
Mar 24 at 7:10
By the way, having just one filter messed things up. It did not complete at all
– Peter Bons
Mar 24 at 7:55
Oh yes! And I wonder why the synchronous one is faster than the parallel one. If you do know why let me know. Else will put up another question tomorrow haha. Thanks for your help man
– RStyle
Mar 24 at 9:36
add a comment |
Ok found the newbie bug, during CompleteProcessing(), I need to return my ActionBlock instead of my TransformBlock as the ActionBlock is the last block.
Ok found the newbie bug, during CompleteProcessing(), I need to return my ActionBlock instead of my TransformBlock as the ActionBlock is the last block.
answered Mar 24 at 7:02
RStyleRStyle
439623
439623
Yeah, just wanted to write that as the answer. Hard to spot but nice you found it.
– Peter Bons
Mar 24 at 7:10
By the way, having just one filter messed things up. It did not complete at all
– Peter Bons
Mar 24 at 7:55
Oh yes! And I wonder why the synchronous one is faster than the parallel one. If you do know why let me know. Else will put up another question tomorrow haha. Thanks for your help man
– RStyle
Mar 24 at 9:36
add a comment |
Yeah, just wanted to write that as the answer. Hard to spot but nice you found it.
– Peter Bons
Mar 24 at 7:10
By the way, having just one filter messed things up. It did not complete at all
– Peter Bons
Mar 24 at 7:55
Oh yes! And I wonder why the synchronous one is faster than the parallel one. If you do know why let me know. Else will put up another question tomorrow haha. Thanks for your help man
– RStyle
Mar 24 at 9:36
Yeah, just wanted to write that as the answer. Hard to spot but nice you found it.
– Peter Bons
Mar 24 at 7:10
Yeah, just wanted to write that as the answer. Hard to spot but nice you found it.
– Peter Bons
Mar 24 at 7:10
By the way, having just one filter messed things up. It did not complete at all
– Peter Bons
Mar 24 at 7:55
By the way, having just one filter messed things up. It did not complete at all
– Peter Bons
Mar 24 at 7:55
Oh yes! And I wonder why the synchronous one is faster than the parallel one. If you do know why let me know. Else will put up another question tomorrow haha. Thanks for your help man
– RStyle
Mar 24 at 9:36
Oh yes! And I wonder why the synchronous one is faster than the parallel one. If you do know why let me know. Else will put up another question tomorrow haha. Thanks for your help man
– RStyle
Mar 24 at 9:36
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55321046%2ftrying-to-build-a-simple-pipe-and-filter%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
You are registering 3 filters in
parallelPipeline
, what do they do? and what doesNameGenerator
do?– Peter Bons
Mar 24 at 6:40
It just touppers() the property. I just narrowed down the problem. I need to threadsleep awhile before i enumerate the results. Seems like concurrentbag was not fully ready adding all the items to the list. Is there a way to know if concurrentbag is ready? Or is there a better data structure to use?
– RStyle
Mar 24 at 6:54