[MFC] 스레드 동기화 방법 (Critical Section)

[MFC] 스레드 동기화


이번 포스팅에서는 MFC 스레드를 사용할 때 스레드들의 충돌을 방지하기 위함으로써 스레드 동기화에 대하여 알아보도록 하겠습니다.


 

실제 실무에서 프로젝트를 하게 되면 하나의 프로세스의 여러 개의 다중 스레드를 동시에 실행시키는 형태로 프로그램을 많이들 개발하게 됩니다. 하지만 여기서 절대 간과해서는 안될 것이 다중 스레드 환경에서 가장 중요시 생각해야 하는 부분이 동기화 작업입니다.


 

스레드 동기화가 필요한 이유는 여러 가지 이유들이 있겠지만 여러 개의 스레드들이 공통적으로 나누어서 사용하는 자원이나 정보가 서로 꼬이지 않게 하기 위함으로 동기화 작업을 하게 됩니다.


 

스레드 동기화를 시켜주는 방법에는 크게 크리티컬 섹션, 뮤텍스, 세마포어 등이 있으며 이번 포스팅에서는 크리티컬 섹션을 이용하여 스레드 동기화 하는 방법에 대해서 알아보도록 하겠습니다.


 

크리티컬 섹션이란?

-       크리티컬 섹션이란 공유 자원을 접근하는 여러 개의 스레드가 있을 경우, 오직 하나의 스레드만 공유 자원에 접근할 수 있도록 하는 방법을 나타냅니다.


 

사용 방법

1

2

3

4

5

6

7

//전역 변수로 선언

CCriticalSection cs;

 

//스레드 A

cs.Lock();

//스레드 공유 변수 접근 영역

cs.UnLock();

cs

 


위와 같이 크리티컬 섹션 변수를 전역적으로 선언하여 공유 자원을 사용하는 부분에 Lock을 해주고 해당 자원이 끝나면 UnLock을 해줘서 빠져 나오게 끔 구현하면 됩니다. 사용하는 방법은 크게 어렵지 않을 거라 생각합니다.

 

감사합니다.^^


 


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY