Advertisement
Guest User

Untitled

a guest
Jul 1st, 2018
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. my $ch = Channel.new();
  2. my $log = '/root/sample/channel.log';
  3. my $value;
  4. my $counter = 1;
  5. my $lock = Lock.new();
  6.  
  7. # log
  8. my $logfh = open :a, :40out-buffer, $log;
  9. $logfh.say: 'Program Started at ' ~ DateTime.now();
  10.  
  11. signal(SIGINT).tap(
  12. {
  13. $logfh.say: "\nInteruppted at " ~ DateTime.now();
  14. $ch.close();
  15. log_usage();
  16. $logfh.close();
  17. exit 255;
  18. });
  19.  
  20. await
  21. start
  22. {
  23. for 1..Inf
  24. {
  25. sleep 1;
  26. $ch.send("$*THREAD - p1 seq $_");
  27. }
  28. },
  29. start
  30. {
  31. for 1..Inf
  32. {
  33. sleep 0.5;
  34. $ch.send("$*THREAD - p2 seq $_");
  35. }
  36. },
  37. start {
  38. while True
  39. {
  40. $value = $ch.poll;
  41. say "$*THREAD from loop - $value" unless $value eqv (Any);
  42. log_usage() if $counter %% 100;
  43. $lock.protect({$counter++});
  44. sleep 0.5;
  45. }
  46. };
  47. $logfh.close();
  48.  
  49. sub log_usage
  50. {
  51. my $proc = run 'ps', '-o', 'pcpu,pmem', $*PID, :out;
  52. my $result = $proc.out.slurp: :close;
  53.  
  54. $logfh.say: DateTime.now() ~ " | $result";
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement