Workflow and Source Panels
Work Queue Panel
Model queued Perl work as deterministic scalar steps.
work queue
A queue can be replayed without timers when each work item is represented by fixed scalar data.
Work Queue Panel
work_queue_panel.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
my $extra = "audit";
my @names = ("read", $extra, "write");
my $log = "";
my $total = 0;
for my $index (0 .. $#names) {
my $name = $names[$index];
my $cost = $index + 1;
my $label = "run:" . $name;
$total = $total + $cost;
if ($log eq "") {
$log = $label;
} else {
$log = $log . "," . $label;
}
}
print "extra=$extra\n";
print "log=$log\n";
print "total=$total\n";
use strict;
use warnings;
my $extra = "read";
my @names = ("read", $extra, "write");
my $log = "";
my $total = 0;
for my $index (0 .. $#names) {
my $name = $names[$index];
my $cost = $index + 1;
my $label = "run:" . $name;
$total = $total + $cost;
if ($log eq "") {
$log = $label;
} else {
$log = $log . "," . $label;
}
}
print "extra=$extra\n";
print "log=$log\n";
print "total=$total\n";
use strict;
use warnings;
my $extra = "render";
my @names = ("read", $extra, "write");
my $log = "";
my $total = 0;
for my $index (0 .. $#names) {
my $name = $names[$index];
my $cost = $index + 1;
my $label = "run:" . $name;
$total = $total + $cost;
if ($log eq "") {
$log = $label;
} else {
$log = $log . "," . $label;
}
}
print "extra=$extra\n";
print "log=$log\n";
print "total=$total\n";
$extra ← audit, @names ← 3, $log ← (empty), $total ← 0
4my $extra→ audit = "audit"; #@extra="read", "render"5my @names→ 3 = ("read", $extraaudit, "write");6my $log→ (empty) = "";7my $total→ 0 = 0;$name ← read, $cost ← 1, $label ← run:read, $total ← 1
pass 1 of 39for my $index0 (0 .. $#names) {10 my $name→ read = $names[$index]read;11 my $cost→ 1 = $index0 + 1;12 my $label→ run:read = "run:" . $nameread;13 $total→ 1 = $total + $cost1;All 3 passes — pass 1 is the card above pass $index$names[$index]$name$cost$label$total$log1 0 read read 1 run:read 0 → 1 (empty) → run:read 2 1 audit audit 2 run:audit 1 → 3 run:read → run:read,run:audit 3 2 write write 3 run:write 3 → 6 run:read,run:audit → run:read,run:audit,run:write $log ← run:read
15if ($log(empty) eq "") {16 $log→ run:read = $labelrun:read;17} else {$log ← run:read,run:audit
pass 1 of 216 $log = $label;17} else {18 $log→ run:read,run:audit = $log . "," . $labelrun:audit;19}$log ← run:read,run:audit,run:write
pass 2 of 216 $log = $label;17} else {18 $log→ run:read,run:audit,run:write = $log . "," . $labelrun:write;19}print "extra=$extra ";
22print "extra=$extraaudit\n";23print "log=$logrun:read,run:audit,run:write\n";24print "total=$total6\n";outputextra=audit log=run:read,run:audit,run:write total=6
$extra ← read, @names ← 3, $log ← (empty), $total ← 0
4my $extra→ read = "read";5my @names→ 3 = ("read", $extraread, "write");6my $log→ (empty) = "";7my $total→ 0 = 0;$name ← read, $cost ← 1, $label ← run:read, $total ← 1
pass 1 of 39for my $index0 (0 .. $#names) {10 my $name→ read = $names[$index]read;11 my $cost→ 1 = $index0 + 1;12 my $label→ run:read = "run:" . $nameread;13 $total→ 1 = $total + $cost1;All 3 passes — pass 1 is the card above pass $index$names[$index]$name$cost$label$total$log1 0 read read 1 run:read 0 → 1 (empty) → run:read 2 1 read read 2 run:read 1 → 3 run:read → run:read,run:read 3 2 write write 3 run:write 3 → 6 run:read,run:read → run:read,run:read,run:write $log ← run:read
15if ($log(empty) eq "") {16 $log→ run:read = $labelrun:read;17} else {$log ← run:read,run:read
pass 1 of 216 $log = $label;17} else {18 $log→ run:read,run:read = $log . "," . $labelrun:read;19}$log ← run:read,run:read,run:write
pass 2 of 216 $log = $label;17} else {18 $log→ run:read,run:read,run:write = $log . "," . $labelrun:write;19}print "extra=$extra ";
22print "extra=$extraread\n";23print "log=$logrun:read,run:read,run:write\n";24print "total=$total6\n";outputextra=read log=run:read,run:read,run:write total=6
$extra ← render, @names ← 3, $log ← (empty), $total ← 0
4my $extra→ render = "render";5my @names→ 3 = ("read", $extrarender, "write");6my $log→ (empty) = "";7my $total→ 0 = 0;$name ← read, $cost ← 1, $label ← run:read, $total ← 1
pass 1 of 39for my $index0 (0 .. $#names) {10 my $name→ read = $names[$index]read;11 my $cost→ 1 = $index0 + 1;12 my $label→ run:read = "run:" . $nameread;13 $total→ 1 = $total + $cost1;All 3 passes — pass 1 is the card above pass $index$names[$index]$name$cost$label$total$log1 0 read read 1 run:read 0 → 1 (empty) → run:read 2 1 render render 2 run:render 1 → 3 run:read → run:read,run:render 3 2 write write 3 run:write 3 → 6 run:read,run:render → run:read,run:render,run:write $log ← run:read
15if ($log(empty) eq "") {16 $log→ run:read = $labelrun:read;17} else {$log ← run:read,run:render
pass 1 of 216 $log = $label;17} else {18 $log→ run:read,run:render = $log . "," . $labelrun:render;19}$log ← run:read,run:render,run:write
pass 2 of 216 $log = $label;17} else {18 $log→ run:read,run:render,run:write = $log . "," . $labelrun:write;19}print "extra=$extra ";
22print "extra=$extrarender\n";23print "log=$logrun:read,run:render,run:write\n";24print "total=$total6\n";outputextra=render log=run:read,run:render,run:write total=6