임베디드

[Thread] 멀티프로세스와 멀티스레드

히똔 2022. 4. 18. 14:52
728x90
반응형

시스템 프로그래밍의 시작으로 멀티 프로세스와 멀티 스레드에 대해서 알아보고자 한다.

 

멀티프로세스 (Multi Process)

CPU는 한번에 한가지 동작만 수행한다. (싱글 코어일 경우)
그렇기 때문에 한 프로세스를 수행하고 있다면, 다른 프로세스는 멈춰있는 상태가 될 것이다.

그런데 우리는 컴퓨터로 동시에 블로그도 하고 게임도 하고 영상통화도 할 수 있다.
이건 어떻게 가능한 것일까?
CPU가 하나이기 때문에 이걸 가능하게 하는 것은,
매우 빠른 속도로 모든 프로세스를 하나씩 돌아가면서 수행하는 것이다.
그렇게 해서 우리 눈에는 동시에 수행하는것 처럼 보여지는 것이다.

 

멀티스레드 (Multi Thread)

멀티스레드는 한 프로세스 내에서 두개 이상의 함수를 동시에 실행시키고 싶을 때 사용한다.

예를 들어 abc와 bts 함수를 동시에 실행하여 ABC와 BTS 문자열이 번갈아 나오는 코드를 제작하고자 할때, 다음 코드처럼 짠다면 어떻게 될까?

멀티 스레드 실패 예시

abc 함수에서 무한루프를 돌기 때문에 bts 함수가 시작되지도 않을 것이다.

여기에 멀티스레드를 적용한다면 의도한대로 ABC와 BTS가 번갈아 나오면서 잘 작동이 될 것이다.

멀티스레드를 어떻게 사용해야하는지 궁금하다면 다음 포스팅을 참고하길 바란다.

 

[다음 포스팅]

728x90
반응형