class Program
{
static void UseThreads( int numberOfOperations)
{
using ( var countdown = new CountdownEvent(numberOfOperations))
{
Console.WriteLine( " Scheduling work by creating threads ");
for ( int i = 0; i < numberOfOperations; i++)
{
var thread = new Thread(() =>
{
Console.WriteLine( " current Thread Id={0} ", Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(TimeSpan.FromSeconds( 0.1));
countdown.Signal();
});
thread.Start();
}
countdown.Wait();
Console.WriteLine();
}
}
static void UseThreadPool( int numberOfOperations)
{
using ( var countdown = new CountdownEvent(numberOfOperations))
{
Console.WriteLine( " Starting work on a threadPool ");
for ( int i = 0; i < numberOfOperations; i++)
{
ThreadPool.QueueUserWorkItem(x =>
{
Console.WriteLine( " current Thread Id={0} ", Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(TimeSpan.FromSeconds( 0.1));
countdown.Signal();
});
}
countdown.Wait();
Console.WriteLine();
}
}
static void Main()
{
const int numberOfOpeartions = 3000;
var sw = new Stopwatch();
sw.Start();
UseThreads(numberOfOpeartions);
sw.Stop();
Console.WriteLine( " Excution time using threads:{0} ", sw.ElapsedMilliseconds);
sw.Reset();
sw.Start();
UseThreadPool(numberOfOpeartions);
sw.Stop();
Console.WriteLine( " Execution time using threads:{0} ", sw.ElapsedMilliseconds);
}
}
{
static void UseThreads( int numberOfOperations)
{
using ( var countdown = new CountdownEvent(numberOfOperations))
{
Console.WriteLine( " Scheduling work by creating threads ");
for ( int i = 0; i < numberOfOperations; i++)
{
var thread = new Thread(() =>
{
Console.WriteLine( " current Thread Id={0} ", Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(TimeSpan.FromSeconds( 0.1));
countdown.Signal();
});
thread.Start();
}
countdown.Wait();
Console.WriteLine();
}
}
static void UseThreadPool( int numberOfOperations)
{
using ( var countdown = new CountdownEvent(numberOfOperations))
{
Console.WriteLine( " Starting work on a threadPool ");
for ( int i = 0; i < numberOfOperations; i++)
{
ThreadPool.QueueUserWorkItem(x =>
{
Console.WriteLine( " current Thread Id={0} ", Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(TimeSpan.FromSeconds( 0.1));
countdown.Signal();
});
}
countdown.Wait();
Console.WriteLine();
}
}
static void Main()
{
const int numberOfOpeartions = 3000;
var sw = new Stopwatch();
sw.Start();
UseThreads(numberOfOpeartions);
sw.Stop();
Console.WriteLine( " Excution time using threads:{0} ", sw.ElapsedMilliseconds);
sw.Reset();
sw.Start();
UseThreadPool(numberOfOpeartions);
sw.Stop();
Console.WriteLine( " Execution time using threads:{0} ", sw.ElapsedMilliseconds);
}
}