예제 #1
0
        static void Main(string[] args)
        {
            var pool = new ApplicationThreadPool("test", 16, 1024, true);

            var tasks = new ApplicationThreadPool.TaskState[pool.MaxThreads];
            for (var i = 0; i < pool.MaxThreads; ++i)
            {
                tasks[i] = pool.QueueUserTask(o => { Console.WriteLine("Hello"); });
            }

            ApplicationThreadPool.TaskState.WaitAll(tasks);

            Console.WriteLine("Finished");
            Console.ReadLine();
        }
예제 #2
0
        static void Main(string[] args)
        {
            var pool = new ApplicationThreadPool<Context, State>(() => new Context(), null, "test", 16, 1024, true);

            var activeThreads = pool.MaxThreads;
            for (var i = 0; i < pool.MaxThreads; ++i)
            {
                pool.QueueUserWorkItem((c, s) => { c.Write(s.Text); Interlocked.Decrement(ref activeThreads); }, new State(i.ToString()));
            }

            while (activeThreads > 0)
            {
                Thread.Sleep(0);
            }

            Console.WriteLine("Finished");
            Console.ReadLine();
        }