OK, we've beaten the producer/consumer thread/coro model to death. Here's a
different use of threads: how simple can we make this in P6:

  sub slow_func
  {
          my $percent_done = 0;
          my $tid = thread { slow_func_imp( \$percent_done ) };
          thread { status_monitor($percent_done) and sleep 60 until
$tid.done };
          return wait $tid;
  }

I think this would work under Austin's A17; but it feels a bit clunky. The
fact that the "sleep 60" isn't broken as soon as the function is done is
untidy, though I wouldn't want to start killing thread.

perhaps:

  {
      ...
      $tid = thread { slow... }
      status_monitor(\$percent_done) and wait(60 | $tid) until $tid.done;
      return $tid.result;
  }

The thing is, that "wait 60" probably can't work -- replace C<60> with
C<$period>, and the semantics change. There are some obvious hacks that
could work here: but is there a really nice solution. Ideally, we won't need
the low level details such as C<$tid>


Dave.


Reply via email to