On Mon, 28 May 2018 at 17:24, JJ Merelo <jjmer...@gmail.com> wrote:

> Hi
>
> El lun., 28 may. 2018 a las 9:04, Norman Gaywood (<ngayw...@gmail.com>)
> escribió:
>
>> T""his simple program creates a thread to read a directory with dir() and 
>> place the files on a channel. $N worker threads read that channel and 
>> "process" (prints) the files. But I'm getting this "An operation first 
>> awaited:"
>> error.
>>
>> I've read the traps page about this error several times, but still can't
>> make sense of it. Can some explain what's going on here?
>>
>> The directory contents:
>> $ ls
>> a  b  c  traverse-dir0.p6
>>
>> Running the program:
>> $ ./traverse-dir0.p6
>> traverse-dir0.p6
>> a
>> b
>> c
>> An operation first awaited:
>>   in sub MAIN at ./traverse-dir0.p6 line 24
>>   in block <unit> at ./traverse-dir0.p6 line 5
>>
>> Died with the exception:
>>     Cannot find method 'path': no method cache and no .^find_method
>>       in block  at ./traverse-dir0.p6 line 16
>>
>> The program:
>> $ cat traverse-dir0.p6
>> #!/usr/bin/env perl6
>> # There is a thread to populate $dir-channel by reading filenames in a
>> directory with dir()
>> # and $N worker threads to read the filenames from the $dir-channel.
>>
>> sub MAIN( Str $dir = ".", Int :$N = 4 ) {
>>
>>     my $dir-channel = Channel.new();
>>     my $dir-read = start {
>>         $dir-channel.send( $_ ) for dir $dir;
>>         $dir-channel.close;
>>
> You are repeatedly closing the channel here. That accounts for the error.
> If you comment that out, it will just get stuck, but that's a different
> problem
>

If I comment out the channel.close then the worker threads will get wait
forever on the channel.
I don't see how I am repeatedly closing the channel. The "for dir
$dir"  should run until the dir is exhausted and then close the
channel
(once).


> JJ
> PS: It would be great if you would post this question to StackOverflow
> too, you will get lots of knowlegeable answers and it will easy for
> everyone to find the answer there afterwards.
>

Good idea. I should use StackOverflow more:
https://stackoverflow.com/questions/50573586/perl6-an-operation-first-awaited

Reply via email to