Пример #1
0
 static void FaradayTest(HiscoreTable _table)
 {
     _table.Enter("Edison", 100);
     _table.Enter("Faraday", 23);
     _table.Enter("Faraday", 100);
     _table.Enter("Edison", 100);
 }
Пример #2
0
 // ReadWriterLockSlim demo methods
 static void TeslaTest(HiscoreTable _table)
 {
     _table.Enter("Tesla", 10);
     _table.Enter("Tesla", 10);
     _table.Enter("Tesla", 100);
     _table.Delete("Faraday");
 }
Пример #3
0
        static void ReadWriterLockSlimDemo()
        {
            Console.WriteLine("ReadWriterLockSlim demo");

            var random = new Random();

            // The data the threads will attempt to manipulate
            var hiscore_table = new HiscoreTable();

            // Create a few worker threads
            const int NUM_THREADS = 10;
            var       threads     = new Thread[NUM_THREADS];

            // Assign random tasks to the threads
            for (int i = 0; i < NUM_THREADS; i++)
            {
                ThreadDelegate thread_delegate = () => {};
                switch (random.Next(3))
                {
                case 0:
                    thread_delegate = () => TeslaTest(hiscore_table);
                    break;

                case 1:
                    thread_delegate = () => EdisonTest(hiscore_table);
                    break;

                case 2:
                    thread_delegate = () => FaradayTest(hiscore_table);
                    break;
                }
                threads[i]      = new Thread(new ThreadStart(thread_delegate));
                threads[i].Name = String.Format("Thread {0}", i);
            }

            // Start the threads
            for (int i = 0; i < NUM_THREADS; i++)
            {
                threads[i].Start();
            }

            // Block until all threads are finished
            for (int i = 0; i < NUM_THREADS; i++)
            {
                threads[i].Join();
            }

            Console.Write(Environment.NewLine);
        }
Пример #4
0
 static void EdisonTest(HiscoreTable _table)
 {
     _table.Enter("Edison", 1000);
     _table.Delete("Edison");
     _table.Delete("Tesla");
 }