#8 Jerry
Diky moc za archiv! Podivam se, zda pujde neco pouzit.
Producer/Consumer je jen pattern, ale zasekl jsem kdyz je potreba mit 100 filtru, kde jeden je Producer a 99 dela oboje (Consumer i Producer). Museji se totiz spustit v urcitem poradi, protoze vystup jednoho je vstup druheho. A nejpomalejsi seriovy filtr se musi automaticky detekovat pres narustajici queue.size, a pak pres Scheduler paralelizovat.
V prikladech, ktere jsou v Jave je Producer/Consumer bez Scheduleru a bez Pipeline. Pipeline je ten Filter Graph, to poradi ve kterem se maji spoustet. Scheduler je zase ten ForkJoinPool s work stealing, pres ktery ma bezet jen 8 threadu v jednu dobu.
tzn. jsem se zasekl na dynamickem load balancingu v pripade, ze Producer/Consumer je tam treba 100x zasebou, a ja nechci mit 100 threadu najednou, a chci mit tu pipeline spustenou v poradi, v jakem je v Grafu (pro jednoduchost muze byt Pipepine Set. Napr. Set<Step> pipeline ...; A pak StepA, StepB, StepC, StepD - 4 filtry). StepA je Producer, StepB je oboje (Consumer/Producer), StepC je oboje, StepD je Consumer. Ted za behu chci zjistit, zda narusta nekde queue a paralelizovat toho nejpomalejsiho filtra. (treba StepB).
Ten koncept znovu vynalezam na kolene. No, kez by to byla jedna podminka. Jde o ten cely koncept, at se to load balancuje za behu, vzdy v tom bode kde je to nejpomalejsi, a at to nedela blbosti (neskace nesmyslne sem a tam v poctu najednou spustenych threadu). Jak mam zatez (load) jednotlivych queue merit, aby to paralelizovalo chytre ten nejpomalejsi seriovy filtr, a bez blbosti?