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;








1















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();











share|improve this question






















  • 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

















1















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();











share|improve this question






















  • 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













1












1








1








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();











share|improve this question














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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Mar 24 at 5:39









RStyleRStyle

439623




439623












  • 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

















  • 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
















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












1 Answer
1






active

oldest

votes


















1














Ok found the newbie bug, during CompleteProcessing(), I need to return my ActionBlock instead of my TransformBlock as the ActionBlock is the last block.






share|improve this answer























  • 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











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
);



);













draft saved

draft discarded


















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









1














Ok found the newbie bug, during CompleteProcessing(), I need to return my ActionBlock instead of my TransformBlock as the ActionBlock is the last block.






share|improve this answer























  • 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















1














Ok found the newbie bug, during CompleteProcessing(), I need to return my ActionBlock instead of my TransformBlock as the ActionBlock is the last block.






share|improve this answer























  • 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













1












1








1







Ok found the newbie bug, during CompleteProcessing(), I need to return my ActionBlock instead of my TransformBlock as the ActionBlock is the last block.






share|improve this answer













Ok found the newbie bug, during CompleteProcessing(), I need to return my ActionBlock instead of my TransformBlock as the ActionBlock is the last block.







share|improve this answer












share|improve this answer



share|improve this answer










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

















  • 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



















draft saved

draft discarded
















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

SQL error code 1064 with creating Laravel foreign keysForeign key constraints: When to use ON UPDATE and ON DELETEDropping column with foreign key Laravel error: General error: 1025 Error on renameLaravel SQL Can't create tableLaravel Migration foreign key errorLaravel php artisan migrate:refresh giving a syntax errorSQLSTATE[42S01]: Base table or view already exists or Base table or view already exists: 1050 Tableerror in migrating laravel file to xampp serverSyntax error or access violation: 1064:syntax to use near 'unsigned not null, modelName varchar(191) not null, title varchar(191) not nLaravel cannot create new table field in mysqlLaravel 5.7:Last migration creates table but is not registered in the migration table

은진 송씨 목차 역사 본관 분파 인물 조선 왕실과의 인척 관계 집성촌 항렬자 인구 같이 보기 각주 둘러보기 메뉴은진 송씨세종실록 149권, 지리지 충청도 공주목 은진현