public void TestFast()
        {
            const int n = 1000000;
            ActorClass[] actors = new ActorClass[Math.Max(Environment.ProcessorCount - 1, 1)];

            for (int i = 0; i < actors.Length; i++)
            {
                actors[i] = new ActorClass();
            }

            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < actors.Length; j++)
                {
                    actors[j].Fast();
                }
            }

            ManualResetEvent[] readyHandles = new ManualResetEvent[actors.Length];
            for (int i = 0; i < actors.Length; i++)
            {
                actors[i].Set(readyHandles[i] = new ManualResetEvent(false));
            }

            if (!WaitHandle.WaitAll(readyHandles, 20000))
                throw new TimeoutException();
        }
        public void Test()
        {
            ActorClass actorClass = new ActorClass();
            Task[] tasks = new Task[10];

            for (int i = 0; i < tasks.Length; i++)
            {
                tasks[i] = new Task(actorClass.Foo);
                tasks[i].Start();
            }

            Assert.True(actorClass.CountdownEvent.Wait(10000));

            Assert.AreEqual(10, actorClass.Count);
        }
        public void Test()
        {
            ActorClass actorClass = new ActorClass();

            Task[] tasks = new Task[10];

            for (int i = 0; i < tasks.Length; i++)
            {
                tasks[i] = new Task(actorClass.Foo);
                tasks[i].Start();
            }

            Assert.True(actorClass.CountdownEvent.Wait(10000));

            Assert.AreEqual(10, actorClass.Count);
        }