internal virtual void Start(TellerPool tellerPool) { TellerRequest tr = new TellerRequest(); tellerPool.Acquire(tr, true); // Blocks until a teller is acquired. Teller teller = (Teller)tr.ResourceObtained; teller.DoService(this); // Blocks while the teller is servicing me. // Service is done. tr.Release(); }