Advertisement
Guest User

Untitled

a guest
May 5th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. fun print_racey (x:unit): cmd[unit] =
  2.   cmd(
  3.      spawn(cmd(val _ = cmd(print 'h') in
  4.      spawn(cmd(val _ = cmd(print 'e') in
  5.      spawn(cmd(val _ = cmd(print 'l') in  
  6.      spawn(cmd(val _ = cmd(print 'l') in  
  7.      spawn(cmd(val _ = cmd(print 'o') in  
  8.      spawn(cmd(val _ = cmd(print ' ') in  
  9.      spawn(cmd(val _ = cmd(print 'w') in  
  10.      spawn(cmd(val _ = cmd(print 'o') in  
  11.      spawn(cmd(val _ = cmd(print 'r') in  
  12.      spawn(cmd(val _ = cmd(print 'l') in  
  13.      spawn(cmd(val _ = cmd(print 'd') in  
  14.      spawn(cmd(val _ = cmd(print '!') in  
  15.      ret (<>))))))))))))))))))))))))));
  16.  
  17. fun print_safe (l:lock): cmd[unit] =
  18.   cmd(
  19.      val _ = acquire l in  
  20.      spawn(cmd(val _ = cmd(print 'h') in
  21.      spawn(cmd(val _ = cmd(print 'e') in
  22.      spawn(cmd(val _ = cmd(print 'l') in  
  23.      spawn(cmd(val _ = cmd(print 'l') in  
  24.      spawn(cmd(val _ = cmd(print 'o') in  
  25.      spawn(cmd(val _ = cmd(print ' ') in  
  26.      spawn(cmd(val _ = cmd(print 'w') in  
  27.      spawn(cmd(val _ = cmd(print 'o') in  
  28.      spawn(cmd(val _ = cmd(print 'r') in  
  29.      spawn(cmd(val _ = cmd(print 'l') in  
  30.      spawn(cmd(val _ = cmd(print 'd') in  
  31.      spawn(cmd(val _ = cmd(print '!') in  
  32.      spawn(cmd(val _ = release l      in  
  33.      ret (<>))))))))))))))))))))))))))));
  34.  
  35.  
  36. fun race (x:unit): cmd[unit] =
  37.   cmd(
  38.     {spawn(print_racey(<>)),
  39.      spawn(print_racey(<>)),
  40.      spawn(print_racey(<>))});
  41.  
  42. fun no_race (x:unit): cmd[unit] =
  43.   cmd(
  44.     val l = new_lock (<>) in
  45.     val _ = cmd(spawn(print_safe l)) in
  46.     val _ = cmd(spawn(print_safe l)) in
  47.     val _ = cmd(spawn(print_safe l)) in
  48.     ret (<>));
  49.  
  50. do(race <>);
  51. do(no_race <>);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement