Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define WIN32_LEAN_AND_MEAN
- #include <stdio.h>
- #include <stdlib.h>
- #include <windows.h>
- int global = 1;
- DWORD WINAPI ThreadFunc(LPVOID);
- // DWORD는 더블워드 = long
- // WINAPI : Windows의 API
- // LPVOID : ms에서 사용하는 void*
- void get_input()
- {
- int a;
- for (int i = 0; i < 300; i++)
- {
- printf("input = ");
- scanf("%d", &a);
- if (a == 0) {
- printf("global = %d\n", global);
- }
- else if (a == 1)
- {
- global = 0;
- }
- else
- printf("%d\n", a);
- //Sleep(1000);
- }
- }
- DWORD WINAPI incGlobal(LPVOID n)
- {
- int i;
- for (i = 0; i<100; i++) {
- printf("%d%d%d%d%d%d%d%d global = %d\n", n, n, n, n, n, n, n, n, global++);
- }
- Sleep(1000);
- return;
- }
- DWORD WINAPI reduceGlobal(LPVOID n)
- {
- int i;
- for (i = 0; i<100; i++) {
- printf("%d%d%d%d%d%d%d%d global = %d\n", n, n, n, n, n, n, n, n, global--);
- }
- Sleep(3000);
- return;
- }
- DWORD WINAPI getInput(LPVOID n)
- {
- get_input();
- return;
- }
- DWORD WINAPI printA(LPVOID n)
- {
- int a;
- for (int i = 0; i < 1000; i++)
- {
- //printf("\n==A==\n");
- global++;
- Sleep(100);
- }
- printf("%d", global);
- return;
- }
- int main()
- {
- HANDLE hThrd; //스레드를 접근하기 위한 손잡이 개념
- DWORD threadId;
- int i = 0;
- hThrd = CreateThread(NULL,
- 0,
- getInput, //함수포인터: 함수가 시작하는 메모리 주소
- //아래에서 함수 확인!
- (LPVOID)i, //
- 0,
- &threadId); //
- if (hThrd)
- {
- printf("Thread launched %d\n", i);
- //CloseHandle(hThrd);
- }
- hThrd = CreateThread(NULL,
- 0,
- printA, //함수포인터: 함수가 시작하는 메모리 주소
- //아래에서 함수 확인!
- (LPVOID)2, //
- 0,
- &threadId); //
- if (hThrd)
- {
- printf("Thread launched %d\n", i);
- //CloseHandle(hThrd);
- }
- // Wait for the threads to complete.
- //printf("%d", threadId);
- Sleep(30000000);
- return EXIT_SUCCESS;
- }
- DWORD WINAPI ThreadFunc(LPVOID n)
- {
- int i;
- for (i = 0; i<100; i++) {
- printf("%d%d%d%d%d%d%d%d global = %d\n", n, n, n, n, n, n, n, n, global++);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment