Esempio n. 1
0
        private List <Task <string> > CreateTaskList(SemaphoreTaskProcessor <string> processor, int size, int delay)
        {
            var tasks = new List <Task <string> >();

            for (int i = 0; i < size; i++)
            {
                tasks.Add(Task.Run(() => processor.Process(CreateTask(delay))));
            }
            return(tasks);
        }
Esempio n. 2
0
        public void TestProcessParallel()
        {
            var processor = new SemaphoreTaskProcessor <string>(3);
            var tasks     = CreateTaskList(processor, 10, 1000);

            // 同時実行数3で10タスク実行
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();
            string[] results = Task.WhenAll(tasks).Result;
            stopwatch.Stop();

            // 約4秒かかってるはず
            var elapsed = stopwatch.ElapsedMilliseconds;

            System.Console.WriteLine(elapsed + " milliseconds elapsed.");
            Assert.IsTrue(6000 > elapsed && elapsed > 2000);
        }