public Acceptor(Learner[] learners) { this.learners = learners; Register<Propose>(OnPropose); Register<Accept>(OnAccept); Register<AcceptedValueQuery>(OnAcceptedValueQuery); }
private static void WaitForNewValues(Learner[] learners) { Console.WriteLine("Waiting for new values"); var shouldStop = 0; ThreadPool.QueueUserWorkItem(state => { while (Thread.VolatileRead(ref shouldStop) == 0) { foreach (var learner in learners) { Console.WriteLine("# of commands: {0}. Value: {1}", learner.Commands.TakeWhile(x=>x!=null).Count(), learner.AppliedValue); } Console.WriteLine("- - - - - - - - -"); Thread.Sleep(1000); } }); Console.ReadLine(); Thread.VolatileWrite(ref shouldStop, 1); }