Advertisement
kikosiak

Untitled

Dec 9th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.49 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Threading;
  5.  
  6. namespace Muteksy
  7. {
  8.     class Program
  9.     {
  10.         static List<Thread> watki = new List<Thread>();
  11.  
  12.         static readonly int liczbaIteracji = 10000;
  13.         static readonly int liczbaWatkow = 100;
  14.         static readonly object _lock = new object();
  15.         static Mutex mutex = new Mutex(false, "tu.kielce.pl mutex");
  16.         static Semaphore sem = new Semaphore(1,1);
  17.         static int licznik = 0;
  18.        
  19.         static void Main(string[] args)
  20.         {
  21.             Stopwatch stopWatch = new Stopwatch();
  22.  
  23.             for (int i = 0; i < liczbaWatkow; i++)
  24.             {
  25.                 var watek = new Thread((o) =>
  26.                 {
  27.                     int nrWatku = (int)o;
  28.                    
  29.                     for (int j = 0; j < liczbaIteracji; j++)
  30.                     {
  31.                         /*
  32.                         stopWatch.Start();
  33.                         licznik++;                  
  34.                         stopWatch.Stop();
  35.                         */
  36.  
  37.                         /*
  38.                          stopWatch.Start();
  39.                             lock(_lock){
  40.                                licznik++;
  41.                            }
  42.                          stopWatch.Stop();
  43.                          */
  44.  
  45.                         /*
  46.                           stopWatch.Start();
  47.                            mutex.WaitOne();
  48.                            licznik++;
  49.                            mutex.ReleaseMutex();
  50.                            stopWatch.Stop();*/
  51.  
  52.                         stopWatch.Start();
  53.                         sem.WaitOne();
  54.                         licznik++;
  55.                         sem.Release();
  56.                         stopWatch.Stop();    
  57.                     }
  58.  
  59.                 });
  60.                 watki.Add(watek);
  61.                 watek.Start(i);
  62.             }
  63.            
  64.             foreach (var w in watki)
  65.             {
  66.                 w.Join();
  67.             }
  68.            
  69.             Console.WriteLine("Licznik: {0}",licznik);
  70.             TimeSpan ts = stopWatch.Elapsed;
  71.             string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
  72.             ts.Hours, ts.Minutes, ts.Seconds,
  73.             ts.Milliseconds / 10);
  74.             Console.WriteLine("Czas " + elapsedTime);
  75.             Console.WriteLine("To już jest koniec, naciśnij ENTER...");
  76.             Console.ReadLine();
  77.         }
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement