anchor.diff:    signal f1;signal f2; signal f3; signal f4;signal f5
     fork p1; fork p2; fork p3; fork p4
     
  +*)
positive.code:     member this.Put(a) = send put a
      member this.Get() = signal get
  
  let spawn  =  let def = Join.Create()
                let sp =  def.async<unit->unit>()
                def.When(sp).Do(fun f -> f())
                fun f  -> sp.Invoke(f) 
  
  let b =  new Buffer<int>()
  
  do spawn(fun() -> for i in 1 .. 10 do b.Put(i))
  
  for i in 1..10 do printf "\n%i" (b.Get())
  
  do System.Console.ReadKey()
  
  
  let phils n =
    let def = Join.Create(2*n)
  
negative.code: 
  
  open Microsoft.Research.Joins
  type SC = Join.Scalable
  type LB = Join.LockBased
  type Flavor = LB
  
  // some tentative helper functions to avoid F#'s  c.Invoke() syntax for channel sends
  // perhaps we should just stick to c.Invoke()
  