Guest User

Untitled

a guest
Nov 14th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. #define WIN32_LEAN_AND_MEAN
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <windows.h>
  5.  
  6. int global = 1;
  7. DWORD WINAPI ThreadFunc(LPVOID);
  8. // DWORD는 더블워드 = long
  9. // WINAPI : Windows의 API
  10. // LPVOID : ms에서 사용하는 void*
  11.  
  12.  
  13. void get_input()
  14. {
  15. int a;
  16. for (int i = 0; i < 300; i++)
  17. {
  18. printf("input = ");
  19. scanf("%d", &a);
  20. if (a == 0) {
  21. printf("global = %d\n", global);
  22. }
  23. else if (a == 1)
  24. {
  25. global = 0;
  26. }
  27. else
  28. printf("%d\n", a);
  29. //Sleep(1000);
  30. }
  31. }
  32. DWORD WINAPI incGlobal(LPVOID n)
  33. {
  34. int i;
  35. for (i = 0; i<100; i++) {
  36. printf("%d%d%d%d%d%d%d%d global = %d\n", n, n, n, n, n, n, n, n, global++);
  37. }
  38. Sleep(1000);
  39. return;
  40. }
  41.  
  42. DWORD WINAPI reduceGlobal(LPVOID n)
  43. {
  44. int i;
  45. for (i = 0; i<100; i++) {
  46. printf("%d%d%d%d%d%d%d%d global = %d\n", n, n, n, n, n, n, n, n, global--);
  47. }
  48. Sleep(3000);
  49. return;
  50. }
  51.  
  52. DWORD WINAPI getInput(LPVOID n)
  53. {
  54. get_input();
  55.  
  56. return;
  57. }
  58.  
  59. DWORD WINAPI printA(LPVOID n)
  60. {
  61. int a;
  62. for (int i = 0; i < 1000; i++)
  63. {
  64. //printf("\n==A==\n");
  65. global++;
  66. Sleep(100);
  67. }
  68.  
  69. printf("%d", global);
  70. return;
  71. }
  72.  
  73. int main()
  74. {
  75. HANDLE hThrd; //스레드를 접근하기 위한 손잡이 개념
  76. DWORD threadId;
  77. int i = 0;
  78.  
  79. hThrd = CreateThread(NULL,
  80. 0,
  81. getInput, //함수포인터: 함수가 시작하는 메모리 주소
  82. //아래에서 함수 확인!
  83. (LPVOID)i, //
  84. 0,
  85. &threadId); //
  86. if (hThrd)
  87. {
  88. printf("Thread launched %d\n", i);
  89. //CloseHandle(hThrd);
  90. }
  91.  
  92. hThrd = CreateThread(NULL,
  93. 0,
  94. printA, //함수포인터: 함수가 시작하는 메모리 주소
  95. //아래에서 함수 확인!
  96. (LPVOID)2, //
  97. 0,
  98. &threadId); //
  99. if (hThrd)
  100. {
  101. printf("Thread launched %d\n", i);
  102. //CloseHandle(hThrd);
  103. }
  104. // Wait for the threads to complete.
  105. //printf("%d", threadId);
  106.  
  107.  
  108. Sleep(30000000);
  109.  
  110. return EXIT_SUCCESS;
  111. }
  112.  
  113. DWORD WINAPI ThreadFunc(LPVOID n)
  114. {
  115. int i;
  116. for (i = 0; i<100; i++) {
  117. printf("%d%d%d%d%d%d%d%d global = %d\n", n, n, n, n, n, n, n, n, global++);
  118. }
  119. return 0;
  120. }
Add Comment
Please, Sign In to add comment