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