using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; namespace ConsoleApplication22 { class Program { static int N = 10000; static DateTime start; static string a = "A"; /// /// Funkce, ktera vytvori, naplni a setridi pole /// static void VytvorNaplnASetridPole() { lock(a) { kolikBezi++; } int[] pole = new int[N]; Random rnd = new Random(); for (int i = 0; i < N; i++) { pole[i] = rnd.Next(int.MaxValue); } #region cykly for (int j = 0; j < N-1; j++) { for (int i = 0; i < N-1; i++) { if (pole[i] > pole[i + 1]) { int pom = pole[i]; pole[i] = pole[i + 1]; pole[i + 1] = pom; } } } #endregion Console.WriteLine("{0} ms", (DateTime.Now - start).TotalMilliseconds); lock (a) { kolikBezi--; } } public delegate void Tisk(string zprava); /// /// funkce, ktera ... /// /// Prvni a jediny parametr static void Jednou(string s) { Console.WriteLine("Jednou: {0}",s); } static void Dvakrat(string s) { Console.WriteLine("Dvakrat: {0}", s); Console.WriteLine("Dvakrat: {0}", s); } static int kolikBezi = 0; static void Main(string[] args) { Console.WriteLine(Environment.ProcessorCount); start = DateTime.Now; /* Thread th = new Thread( VytvorNaplnASetridPole ); th.Start(); /* */ new Thread(VytvorNaplnASetridPole).Start(); new Thread(VytvorNaplnASetridPole).Start(); new Thread(VytvorNaplnASetridPole).Start(); new Thread(VytvorNaplnASetridPole).Start(); new Thread(delegate() { N = N / 2; VytvorNaplnASetridPole(); VytvorNaplnASetridPole(); Console.WriteLine("hotovo----"); } ).Start(); while (kolikBezi>0) Console.Write(".",kolikBezi); Console.ReadLine(); /* VytvorNaplnASetridPole(); VytvorNaplnASetridPole(); VytvorNaplnASetridPole(); VytvorNaplnASetridPole(); /* Tisk t; t = Jednou; t("ABCD"); Console.WriteLine("---------"); t = Dvakrat; t("ABCD"); Console.WriteLine("---------"); t += Jednou; t("ABCD"); Console.WriteLine("---------"); t += Dvakrat; t("ABCD"); Console.WriteLine("---------"); t -= Dvakrat; t("ABCD"); Console.WriteLine("---------"); t += delegate(string s) { Console.WriteLine("XXX"); }; t("ABCD"); Console.WriteLine("---------"); t -= delegate(string s) { Console.WriteLine("XXX"); }; t("ABCD"); Console.WriteLine("---------"); /* start = DateTime.Now; VytvorNaplnASetridPole(); VytvorNaplnASetridPole(); VytvorNaplnASetridPole(); VytvorNaplnASetridPole(); Console.ReadLine(); * */ } } }