Comment detail

出力の一時停止と再開 (Nested Flatten)
threadを使った
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use strict;
use threads;
use threads::shared;
use Term::ReadKey;
$| = 1;

my $f : shared;

sub observe {
  ReadMode 'cbreak';
  while(1){
    my $key;
    while(1){ last if $key = ReadKey(0) }
    {
      lock $f;
      if ($key eq 'q'){ ReadMode 'restore'; exit;}
      if ($key eq 'p'){ $f == 1 ? $f-- : $f++;}
    }
  }
}

sub print_a {
  while(1){
    if($f == 1){
      print "a";
      sleep 1;
    }
  }
}

$f = 1;
my $ob = threads->create(\&observe);
my $pr = threads->create(\&print_a);

$ob->join;
$pr->join;

Index

Feed

Other

Link

Pathtraq

loading...