Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. #include <Windows.h>
  2. #include <stdio.h>
  3. #include <conio.h>
  4.  
  5.  
  6. long zmienna =1;
  7. static CRITICAL_SECTION cs;
  8.  
  9. void watek(int* liczba_wejsc)
  10. {
  11. while(true){
  12. EnterCriticalSection(&cs);
  13. EnterCriticalSection(&cs); //dziala z tym
  14. zmienna+=100;
  15. zmienna*=200;
  16. zmienna/=200;
  17. zmienna-=100;
  18. (*liczba_wejsc)++;
  19. LeaveCriticalSection(&cs);
  20. }
  21. }
  22.  
  23. void watek2(int* liczba_wejsc)
  24. {
  25. while(true){
  26. while(!TryEnterCriticalSection(&cs)) //pobuje wejsc do sekcji
  27. {
  28. Sleep(20);
  29. }
  30. zmienna+=100;
  31. zmienna*=200;
  32. zmienna/=200;
  33. zmienna-=100;
  34. (*liczba_wejsc)++;
  35. LeaveCriticalSection(&cs);
  36. }
  37. }
  38.  
  39. long zmienna2=1;
  40. void watekPorownanie(int* liczba_wejscPor)
  41. {
  42. while(true){
  43. EnterCriticalSection(&cs);
  44. //while(!TryEnterCriticalSection(&cs)) //pobuje wejsc do sekcji
  45. //{
  46. // Sleep(20);
  47. //}
  48. zmienna2+=100;
  49. zmienna2*=200;
  50. zmienna2/=200;
  51. zmienna2-=100;
  52. (*liczba_wejscPor)++;
  53. LeaveCriticalSection(&cs);
  54. }
  55. }
  56.  
  57. int main()
  58. {
  59.  
  60. int liczba_wejsc=0;
  61. InitializeCriticalSection(&cs);
  62. //CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)watek,&liczba_wejsc,NULL,NULL);
  63. //CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)watek,&liczba_wejsc,NULL,NULL);
  64.  
  65. CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)watek2,&liczba_wejsc,NULL,NULL);
  66. CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)watek2,&liczba_wejsc,NULL,NULL);
  67.  
  68.  
  69. int liczba_wejscPor=0;
  70. CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)watekPorownanie,&liczba_wejscPor,NULL,NULL);
  71. CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)watekPorownanie,&liczba_wejscPor,NULL,NULL);
  72.  
  73.  
  74. while(true)
  75. {
  76. if(_kbhit()) break;
  77. printf("zmienna:%lu\tl.w:%lu\t",zmienna,liczba_wejsc);
  78. printf("zmienna2:%lu\tl.w:%lu\n",zmienna2,liczba_wejscPor);
  79. Sleep(200);
  80. }
  81.  
  82. DeleteCriticalSection(&cs);
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement