timus221

Untitled

Mar 25th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4.  
  5. long a = 0;
  6. volatile long b = 0;
  7. unsigned long c = 0;
  8.  
  9. void watek1()
  10. {
  11. while (1)
  12. {
  13. a++;
  14. a--;
  15. b++;
  16. b--;
  17. InterlockedIncrement(&c);
  18. InterlockedDecrement(&c);
  19. }
  20. }
  21. DWORD WINAPI watek2(void *v)
  22. {
  23. while (1)
  24. {
  25. a++;
  26. a--;
  27. b++;
  28. b--;
  29. InterlockedIncrement(&c);
  30. InterlockedDecrement(&c);
  31. }
  32. }
  33. DWORD WINAPI watek3(void *v)
  34. {
  35. while (1)
  36. {
  37. a += 10;
  38. a += 10;
  39. b += 10;
  40. b += 10;
  41. InterlockedExchangeAdd(&c, 10);
  42. InterlockedExchangeAdd(&c, 10);
  43. InterlockedExchangeSubtract(&c, 20);
  44. }
  45. }
  46. int main(int argc, char *argv[])
  47. {
  48. HANDLE watek_a, watek_b, watek_c;
  49.  
  50. watek_a = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)watek1, 0, 0, 0);
  51. watek_b = CreateThread(NULL, 0, watek2, 0, 0, 0);
  52. watek_c = CreateThread(NULL, 0, watek3, 0, 0, 0);
  53.  
  54. for (int i = 1; i<1000; i++)
  55. {
  56. Sleep(700);
  57. printf("a = %d \t b = %d \t c = %d \n", a, b, c);
  58. }
  59. CloseHandle(watek_a);
  60. CloseHandle(watek_b);
  61. CloseHandle(watek_c);
  62. return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment