in reply to Re^5: Threads From Hell #3: Missing Some Basic Prerequisites
in thread Threads From Hell #3: Missing Some Basic Prerequisites [Solved]

"A few more details on that?"

My pleasure:

use Thread::Queue; use strict; use warnings; use feature qw(say); my $width = 10; my $height = 10; my $queue = Thread::Queue->new(); for my $y ( 0 .. $width - 1 ) { my @colors; for my $x ( 0 .. $height - 1 ) { push @colors, mandelbrot(); } $queue->enqueue( [ $y, @colors ] ); } $queue->end; while ( my ( $y, @colors ) = @{ $queue->dequeue } ) { say qq($_, $y, $colors[$_])for 0 .. $#colors; } # this is still a fake! sub mandelbrot { int rand 20; } __END__ \monks>undef.pl 0, 0, 8 1, 0, 4 2, 0, 7 ... 7, 9, 10 8, 9, 3 9, 9, 0 Can't use an undefined value as an ARRAY reference at C:\Dokumente und + Einstellungen\karl\Desktop\monks\undef.pl line 20.

This doesn't complain:

while ( my $item = $queue->dequeue ) { my ( $y, @colors ) = @$item; say qq($_, $y, $colors[$_]) for 0 .. $#colors; }

Best regards, Karl

«The Crux of the Biscuit is the Apostrophe»

Replies are listed 'Best First'.
Re^7: Threads From Hell #3: Missing Some Basic Prerequisites
by BrowserUk (Patriarch) on Jun 03, 2015 at 13:13 UTC

    Okay. So when there's nothing left in the queue, my composite dequeue & deref tries to deref before detecting there's nothing to deref, but the fix is obvious.

    The vagaries of typing ideas directly into the browser. Sorry.


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority". I'm with torvalds on this
    In the absence of evidence, opinion is indistinguishable from prejudice. Agile (and TDD) debunked