본문 바로가기
[ CODING STUDY ]/》C언어 코드실습

C언어 - [동시실행, 스레드, 쓰레드, Thread]

by MRG 2021. 9. 15.
728x90
반응형

▣ 안녕하세요. 

이번장에서는 스레드를 공부해보도록 하겠습니다. 

우선 스레드(쓰레드)가 무엇인지 이야기해 보록 하겠습니다.

스레드는 프로세서 내에서 실행되는 흐름, 단위, 갈래를 이야기합니다. 

 

▣ 그럼 여기서 또 다른 질문이 생깁니다.

프로세서가 무엇일까요?

우리가 디버그로 컴파일 과정을 진행하면

링커를 통해서 exe로 프로그램을 만듭니다.

프로세서는 이런 프로그램을 실행되서 돌아가는 상태

컴퓨터가 일하고 처리하는 상태를 이야기합니다. 

 

▣ 그럼 스레드는 무엇일까요?

프로세서는 하나의 일만 처리할 수 있습니다.

그래서 여러개의 스레드로 여러 개에 일을 처리하게 합니다.

이걸 멀티스레드라고 합니다. 

 

▣ 윈도우에서 CTRL + ALT + Delete 키를 누르면 이렇게 

프로세서에 여러개의 프로그램을 돌리고 있는 걸 확인할 수 있습니다.

 

▣ 스레드를 사용하려면 <process.h> 헤더 파일을 입력해주세요.

그리고 주석으로 다시 정리를 해보았습니다.

exe는 프로그램을 의미하고, 프로세서는 프로그램을 실행하고 돌아가는 상태, 컴퓨터가 일을 처리하는 상태를 의미합니다.

스레드는 프로세서내에서 실행되는 흐름 단위, 갈래를 이야기합니다.

프로세 서안에서 여러 개를 작업하는 갈래라고 생각하시면 됩니다.

운영체제를 여러개의 프로세서를 돌립니다.

그럼 한개의한 개의 프로세서에 한 개의 일만 하게 된다면 

마우스를 움직이면 인터넷이 안되고 인터넷을 로그인하면 마우스를 못 움직인다라는 이야기가 됩니다.

이걸 여러개의 스레드를 활용하여 작동하게 하는 겁니다. 

 

▣ 우선 메인함수와 함께 작동할 스레드 함수 해주세요.

unsigned _stdcall 반환형을 주세요. 

Thread_1 함수 이름을 정해주시고(void *arg) 매개변수를 정의해줍니다. 

그리고 함수 안에서 while문으로 무한으로 printf() 함수를 Sleep(1000) 1초마다 출력하게 합니다. 

 

 

 

▣ 그런 다음에 메인 함수에서 _beginthreadex() 함수로 스레드를 생성하는 코드를 작성해줍니다.

쉽게 이야기해서 스레드를 생성하고 함께 프로세서에서 실행하게 됩니다. 

_beginthreadex() 함수에 매개변수로는 (NULL, 0, 생성 스레드, 0, 0, NULL)로 정해줍니다. 

 

▣ 함수에 원형은 이렇습니다. 

그리고 main함수에서 whlie() 무한으로 printf()를 출력하게 합니다. 

디버그를 해서 실행을 해보면

 

▣ 이렇게 Main을 출력하고 1초마다 동시에 스레드 함수와 메인 함수가 동시에 실행되는 걸 확인할 수 있습니다.

728x90
반응형

댓글