소프트웨어/Thread
스레드 프로그래밍 연습 - 1 : 스레드 생성
카켈
2007. 5. 2. 08:50
코드 참조
http://keegan.tistory.com/144
코드 받기
실행 화면
컴파일시 주의
프로젝트 설정(Alt + F7)에서 코드 생성 항목에서 Use run time libary 에 Debug Multithreaded 로 맞춰 주시면 됩니다.
코드 설명
http://keegan.tistory.com/144
코드 받기
실행 화면
컴파일시 주의
프로젝트 설정(Alt + F7)에서 코드 생성 항목에서 Use run time libary 에 Debug Multithreaded 로 맞춰 주시면 됩니다.
코드 설명
/* - 스레드 프로그래밍 연습 - 1 : 스레드 생성 - 저작권 알림 http://keegan.tistory.com/144 - 원본 http://cakel.tistory.com - 수정 교육용을 목적으로 자유롭게 쓰실수 있습니다. - 코드 : thread.cpp 스레드 구현하여 각각 다른 글자들을 출력하는 내용입니다. WIN32 C++ 용입니다. */ // #include <헤더> // 필요한 함수 #include <windows.h> // Sleep() #include <stdio.h> // printf(), fprintf() #include <process.h> // _beginthread(); #include <conio.h> // _getch() // 전역 변수 int repeatA; int repeatB; void PrintA(void *pData); // 첫번째 스레드 void PrintB(void *pData); // 두번째 스레드 int main() { int ch; // fprintf() // 입출력 스트림으로 해당 내용을 출력합니다. // stdout 이 화면이므로, printf 함수와 크게 다르지 않게 작동합니다. fprintf(stdout,"a, b 를 입력하면 출력하지 않습니다. 다른키를 누르면 종료합니다.\n"); fprintf(stdout,"시작!\n"); // _beginthread(함수명, 스택크기, 단일인수) // 스택크기는 0으로 하면 운영체제에서 알아서 넣어 줍니다. // 보통 void* 으로 세번째 인수를 쓰는데, 복잡하게 쓸수도 있습니다. // 스레드는 변수를 공유하면서도 프로세스내에서 병렬적으로 같이 실행할수 있는 // 부프로그램입니다. _beginthread(PrintA, 0, NULL); _beginthread(PrintB, 0, NULL); repeatA = 1; repeatB = 1; while(1) { // 키보드 입력을 받는 메인 스레드에서 Ctrl + C 눌르거나 // 다른키를 눌러서 return 으로 버리면 이미 생성된 스레드도 동반 종료 합니다. // _getch() : getchar() 함수와 달리 엔터를 치지 않아도 // 한번의 키보드 입력으로 들어온 값을 바로 버퍼에 들어가서 // 실행이 완료되는 함수 입니다. conio.h 헤더를 이용합니다. ch = _getch(); if (ch == 'a') repeatA = 0; else if(ch == 'b') repeatB = 0; else break; } return 1; } void PrintA(void* pData) { while(repeatA) {printf(" a "); Sleep(1000);} return; } void PrintB(void *pData) { while(repeatB) {printf(" b "); Sleep(1000);} return; }