Advertisement
kikosiak

Untitled

Dec 2nd, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.06 KB | None | 0 0
  1. ----------zadanie 5-----------------------------
  2. using System;
  3. using System.Diagnostics;
  4. using System.Threading;
  5.  
  6. namespace zad5
  7. {
  8. class Program
  9. {
  10. static int liczbaIteracji = 10;
  11. static int liczbaWatkow = 10;
  12.  
  13. static void wyswietlajCos()
  14. {
  15. Console.WriteLine(Thread.CurrentThread.Name + " zaczyna wyświetlać liczby:");
  16. Random rand = new Random();
  17. for (int ii = 0; ii < liczbaIteracji; ii++)
  18. {
  19. Console.Write("{0}, ", ii); //wyświetl liczbę
  20. Thread.Sleep(rand.Next(0, 2000)); //wstrzymaj działanie na czas od 0 do 2s
  21. }
  22. Console.WriteLine(Thread.CurrentThread.Name + " zakończył pisać liczby.");
  23. }
  24.  
  25. static void Th1()
  26. {
  27. Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime;
  28. var timerH = new Stopwatch();
  29. timerH.Start();
  30. Thread[] tabWatTh1 = new Thread[16];
  31. for(int i = 0; i < 16; i++)
  32. {
  33. tabWatTh1[i] = new Thread(new ThreadStart(wyswietlajCos));
  34. tabWatTh1[i].Name = "W(1) " + i.ToString();
  35. tabWatTh1[i].Start();
  36. Thread.SpinWait(100000000);
  37. tabWatTh1[i].Priority = ThreadPriority.Highest;
  38. }
  39. timerH.Stop();
  40. TimeSpan ts = timerH.Elapsed;
  41. string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
  42. Console.WriteLine("Timer(H): " + elapsedTime);
  43. }
  44.  
  45. static void Th2()
  46. {
  47. Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime;
  48. var timerL = new Stopwatch();
  49. timerL.Start();
  50. Thread[] tabWatTh2 = new Thread[16];
  51. for (int i = 0; i < 16; i++)
  52. {
  53. tabWatTh2[i] = new Thread(new ThreadStart(wyswietlajCos));
  54. tabWatTh2[i].Name = "W(2) " + i.ToString();
  55. tabWatTh2[i].Start();
  56. Thread.SpinWait(100000000);
  57. tabWatTh2[i].Priority = ThreadPriority.Lowest;
  58. }
  59. timerL.Stop();
  60. TimeSpan ts = timerL.Elapsed;
  61. string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
  62. Console.WriteLine("Timer(L): " + elapsedTime);
  63. }
  64.  
  65. static void Main(string[] args)
  66. {
  67. Thread[] tablicaWatkow = new Thread[liczbaWatkow];
  68.  
  69. Thread watekH = new Thread(Th1);
  70. Thread watekL = new Thread(Th2);
  71.  
  72. watekH.Start();
  73. watekL.Start();
  74.  
  75. foreach (Thread watek in tablicaWatkow) //czekamy na wszystkie wątki
  76. {
  77. watekH.Join();
  78. watekL.Join();
  79. }
  80. Console.WriteLine("To już jest koniec, naciśnij ENTER...");
  81. Console.ReadLine();
  82. }
  83. }
  84. }
  85.  
  86. ------------------------zadanie 6-----------------------------------
  87. using System;
  88. using System.Threading;
  89.  
  90. namespace zad6
  91. {
  92. class Program
  93. {
  94. static int liczbaIteracji = 10;
  95. static int liczbaWatkow = 10;
  96. static object _lock = new object();
  97. private static readonly object m_oPadlock = new object();
  98.  
  99. static void wyswietlajCos()
  100. {
  101. Random rand = new Random(Thread.CurrentThread.ManagedThreadId);//inicjuj random numerem wątka
  102. Thread.Sleep(rand.Next(0, 100));
  103. Console.WriteLine(Thread.CurrentThread.Name + " zaczyna pisać:");
  104. Thread.Sleep(100);
  105.  
  106. for (int ii = 0; ii < liczbaIteracji; ii++)
  107. {
  108. Monitor.Enter(m_oPadlock);
  109.  
  110. Console.Write("ala ");
  111. Thread.Sleep(rand.Next(0, 100)); //wstrzymaj działanie na czas od 0 do 0,1
  112. Console.Write("ma ");
  113. Thread.Sleep(rand.Next(0, 100)); //wstrzymaj działanie na czas od 0 do 0,1
  114. Console.WriteLine("kota " + ii);
  115. Thread.Sleep(rand.Next(0, 100)); //wstrzymaj działanie na czas od 0 do 2s
  116.  
  117. Monitor.Exit(m_oPadlock);
  118. }
  119.  
  120.  
  121. Monitor.Enter(m_oPadlock);
  122. Console.WriteLine(Thread.CurrentThread.Name + " zakończył pisać.");
  123. Monitor.Exit(m_oPadlock);
  124. }
  125.  
  126.  
  127. static void Main(string[] args)
  128. {
  129. Thread[] tablicaWatkow = new Thread[liczbaWatkow];
  130. for (int licznik = 0; licznik < liczbaWatkow; licznik++) //tworzymy, nadajemy nazwę i uruchamiamy wątki
  131. {
  132. tablicaWatkow[licznik] = new Thread(new ThreadStart(wyswietlajCos));
  133. tablicaWatkow[licznik].Name = "Wątek nr " + licznik.ToString();
  134. tablicaWatkow[licznik].Start();
  135. }
  136. foreach (Thread watek in tablicaWatkow) //czekamy na wszystkie wątki
  137. {
  138. watek.Join();
  139. }
  140. Console.WriteLine("To już jest koniec, naciśnij ENTER...");
  141. Console.ReadLine();
  142. }
  143. }
  144. }
  145. -------------------zadanie 3 4--------------------------
  146. using System;
  147. using System.Threading;
  148. class Program
  149. {
  150. static int liczbaIteracji = 3;
  151. static int liczbaWatkow = 3;
  152.  
  153. static void wyswietlajCos()
  154. {
  155. Console.WriteLine(Thread.CurrentThread.Name + " zaczyna wyświetlać liczby:");
  156. Random rand = new Random();
  157. for (int ii = 0; ii < liczbaIteracji; ii++)
  158. {
  159. Console.Write("{0}, ", ii); //wyświetl liczbę
  160. Thread.Sleep(rand.Next(0, 2000)); //wstrzymaj działanie na czas od 0 do 2s
  161. }
  162. Console.WriteLine(Thread.CurrentThread.Name + " zakończył pisać liczby.");
  163. }
  164.  
  165. delegate void wyswietlajCosPar(object a);
  166.  
  167. static void Main(string[] args)
  168. {
  169. wyswietlajCosPar ax =(a) =>{
  170. Console.WriteLine(Thread.CurrentThread.Name + " zaczyna wyświetlać liczby:");
  171. Random rand = new Random();
  172. for (int ii = 0; ii < (int)a; ii++)
  173. {
  174. Console.Write("{0}, ", ii); //wyświetl liczbę
  175. Thread.Sleep(rand.Next(0, 2000)); //wstrzymaj działanie na czas od 0 do 2s
  176. }
  177. Console.WriteLine(Thread.CurrentThread.Name + " zakończył pisać liczby.");
  178. };
  179.  
  180. Thread[] tablicaWatkow = new Thread[liczbaWatkow];
  181. for (int licznik = 0; licznik < liczbaWatkow; licznik++) //tworzymy, nadajemy nazwę i uruchamiamy wątki
  182. {
  183. //tablicaWatkow[licznik] = new Thread(new ThreadStart(wyswietlajCos));
  184. tablicaWatkow[licznik] = new Thread(new ParameterizedThreadStart(ax));
  185. tablicaWatkow[licznik].Name = "Wątek nr " + licznik.ToString();
  186. tablicaWatkow[licznik].Start(10);
  187. }
  188. }
  189. }
  190.  
  191. --------------zadanie 7---------------------------
  192. using System;
  193. using System.Threading;
  194.  
  195. namespace zad6
  196. {
  197. class Program
  198. {
  199. static int liczbaIteracji = 10;
  200. static int liczbaWatkow = 10;
  201. static object _lock = new object();
  202. private static readonly object m_oPadlock = new object();
  203.  
  204. static void wyswietlajCos()
  205. {
  206. Random rand = new Random(Thread.CurrentThread.ManagedThreadId);//inicjuj random numerem wątka
  207. Thread.Sleep(rand.Next(0, 100));
  208. Console.WriteLine(Thread.CurrentThread.Name + " zaczyna pisać:");
  209. Thread.Sleep(100);
  210.  
  211. for (int ii = 0; ii < liczbaIteracji; ii++)
  212. {
  213. Monitor.Enter(m_oPadlock);
  214.  
  215. Console.Write("ala ");
  216. Thread.Sleep(rand.Next(0, 100)); //wstrzymaj działanie na czas od 0 do 0,1
  217. Console.Write("ma ");
  218. Thread.Sleep(rand.Next(0, 100)); //wstrzymaj działanie na czas od 0 do 0,1
  219. Console.WriteLine("kota " + ii);
  220. Thread.Sleep(rand.Next(0, 100)); //wstrzymaj działanie na czas od 0 do 2s
  221.  
  222. Monitor.Exit(m_oPadlock);
  223. }
  224.  
  225.  
  226. Monitor.Enter(m_oPadlock);
  227. Console.WriteLine(Thread.CurrentThread.Name + " zakończył pisać.");
  228. Monitor.Exit(m_oPadlock);
  229. }
  230.  
  231.  
  232. static void Main(string[] args)
  233. {
  234. Thread[] tablicaWatkow = new Thread[liczbaWatkow];
  235. for (int licznik = 0; licznik < liczbaWatkow; licznik++) //tworzymy, nadajemy nazwę i uruchamiamy wątki
  236. {
  237. tablicaWatkow[licznik] = new Thread(() =>
  238. {
  239. Console.WriteLine("Wątek uruchomiony i idzie spać...");
  240. try
  241. {
  242. Thread.Sleep(2000);
  243. }
  244. catch (ThreadInterruptedException tiex)
  245. {
  246. Console.WriteLine("Złapałem wyjątek ThreadInterruptedException: " + tiex.Message);
  247. }
  248. catch (ThreadAbortException taex)
  249. {
  250. Console.WriteLine("Złapałem wyjątek ThreadAbortException: " + taex.Message);
  251. }
  252. finally
  253. {
  254. Console.WriteLine("Wykonuję finally");
  255. }
  256. Console.WriteLine("Wątek kończy działanie normalnie");
  257. });
  258. tablicaWatkow[licznik].Name = "Wątek nr " + licznik.ToString();
  259. tablicaWatkow[licznik].Start();
  260.  
  261.  
  262.  
  263. }
  264. foreach (Thread watek in tablicaWatkow) //czekamy na wszystkie wątki
  265. {
  266. watek.Join();
  267. }
  268. Console.WriteLine("To już jest koniec, naciśnij ENTER...");
  269. Console.ReadLine();
  270. }
  271. }
  272. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement