Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- my $ch = Channel.new();
- my $log = '/root/sample/channel.log';
- my $value;
- my $counter = 1;
- my $lock = Lock.new();
- # log
- my $logfh = open :a, :40out-buffer, $log;
- $logfh.say: 'Program Started at ' ~ DateTime.now();
- signal(SIGINT).tap(
- {
- $logfh.say: "\nInteruppted at " ~ DateTime.now();
- $ch.close();
- log_usage();
- $logfh.close();
- exit 255;
- });
- await
- start
- {
- for 1..Inf
- {
- sleep 1;
- $ch.send("$*THREAD - p1 seq $_");
- }
- },
- start
- {
- for 1..Inf
- {
- sleep 0.5;
- $ch.send("$*THREAD - p2 seq $_");
- }
- },
- start {
- while True
- {
- $value = $ch.poll;
- say "$*THREAD from loop - $value" unless $value eqv (Any);
- log_usage() if $counter %% 100;
- $lock.protect({$counter++});
- sleep 0.5;
- }
- };
- $logfh.close();
- sub log_usage
- {
- my $proc = run 'ps', '-o', 'pcpu,pmem', $*PID, :out;
- my $result = $proc.out.slurp: :close;
- $logfh.say: DateTime.now() ~ " | $result";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement