Inheritance: IAsynchronizer
        public void Check_if_data_is_not_retrieved_from_queue()
        {
            const int N = 200;
            const int N_THREADS = 3;

            var sut = new Parallelize(N_THREADS);

            var are = new AutoResetEvent(false);
            var results = new List<int>();
            var threads = new Dictionary<int,bool>();
            Action<IMessage> dequeue = _ => {
                lock(results)
                {
                    if (!threads.ContainsKey(Thread.CurrentThread.ManagedThreadId))
                        threads.Add(Thread.CurrentThread.ManagedThreadId, true);
                    var i = (int) _.Data;
                    results.Add(i);
                    if (results.Count == N) are.Set();
                    Thread.Sleep(i % 20);
                }
            };

            sut.Start();
            for(var i = 1; i<=N; i++)
                sut.Process(new Message("x", i), dequeue);

            Assert.IsTrue(are.WaitOne(4000));
            Assert.AreEqual((N*(N+1)/2), results.Sum());
            Assert.AreEqual(N_THREADS, threads.Count);
        }
        public void Check_if_data_is_not_retrieved_from_queue()
        {
            const int N = 200;
            const int N_THREADS = 3;

            var sut = new Parallelize<int>(N_THREADS);

            var are = new AutoResetEvent(false);
            var results = new List<int>();
            var threads = new Dictionary<long,bool>();
            Action<int> dequeue = _ => {
                lock(results)
                {
                    if (!threads.ContainsKey(Thread.CurrentThread.GetHashCode()))
                        threads.Add(Thread.CurrentThread.GetHashCode(), true);
                    results.Add(_);
                    if (results.Count == N) are.Set();
                    Thread.Sleep(_ % 10);
                }
            };

            sut.Start();
            for(var i = 1; i<=N; i++)
                sut.Process(i, dequeue);

            Assert.IsTrue(are.WaitOne(4000));
            Assert.AreEqual((N*(N+1)/2), results.Sum());
            Assert.AreEqual(N_THREADS, threads.Count);
        }
 internal AsynchronizeFIFO()
 {
     _parallelize = new Parallelize(1);
 }
 internal AsynchronizeRoundRobin()
 {
     _parallelize = new Parallelize(1, new NotifyingPartionedQueue<ScheduledTask>());
 }
 internal AsynchronizeFIFO()
 {
     _parallelize = new Parallelize(1);
 }
示例#6
0
 internal AsynchronizeRoundRobin()
 {
     _parallelize = new Parallelize(1, new NotifyingPartionedQueue <ScheduledTask>());
 }