public static void Test()
        {
            SafeList <string> list = new SafeList <string>();

            Thread tr1 = new Thread(new ThreadStart(new ReadWriteSimulation(list).RunReader));
            Thread tr2 = new Thread(new ThreadStart(new ReadWriteSimulation(list).RunReader));
            Thread tr3 = new Thread(new ThreadStart(new ReadWriteSimulation(list).RunReader));
            Thread tr4 = new Thread(new ThreadStart(new ReadWriteSimulation(list).RunReader));
            Thread tr5 = new Thread(new ThreadStart(new ReadWriteSimulation(list).RunReader));
            Thread tr6 = new Thread(new ThreadStart(new ReadWriteSimulation(list).RunReader));

            Thread tw1 = new Thread(new ThreadStart(new ReadWriteSimulation(list).RunWriter));
            Thread tw2 = new Thread(new ThreadStart(new ReadWriteSimulation(list).RunWriter));

            tr1.Start();
            tr2.Start();
            tr3.Start();
            tr4.Start();
            tr5.Start();
            tr6.Start();

            tw1.Start();
            tw2.Start();

            tr1.Join();
            tr2.Join();
            tr3.Join();
            tr4.Join();
            tr5.Join();
            tr6.Join();

            tw1.Join();
            tw2.Join();

            foreach (string item in list.GetList())
            {
                Console.WriteLine(item);
            }
        }
 public ReadWriteSimulation(SafeList <string> output)
 {
     this.output = output;
 }