2021. 7. 28. 10:49
Programming/MFC
참고 : https://popcorntree.tistory.com/84?category=813524
https://woo-dev.tistory.com/164
MFC에서 멀티스레드를 사용 시 메인스레드가 기다려주는지, 기다려주지 않는지가 중요한 부분이있다.
예를 들어,
Main Thread에서 여러 스레드를 생성하여 멀티스레드로 작업할 경우, 아래와 같이 thread 를 생성해 준 후 m_thread.join() 또는 m_thread.detach()를 사용하느냐에 따라 수행 시간은 달라진다.
std::thread m_thread = std::thread(RunThread, PARAM param);
m_thread.join();
m_thread.detach();
m_thread.join(); 을 사용할 경우, Main Thread는 m_thread의 작업이 끝날 때까지 기다려 준다. 즉, m_thead의 작업이 끝나기 전까지는 다른 작업을 하지 않으므로, 멀티스레스를 사용하는 것이 아닌, 싱글 스레드를 사용하는 것과 같은 결과를 얻는다.
m_thread.detach(); 를 사용할 경우, Main Thread는 m_thread의 작업이 끝날 때까지 기다리지 않고, 자신의 다른 작업을 수행한다. 이 때, detach()한 스레드는 자신만의 작업을 수행한다. 즉, 멀티스레드로 작업을 수행한다.
C#에서는 스레드의 사용을 객체 생성하고 실행하는 것만으로도 싱글스레드와 멀티스레드 사용을 프로그래머가 조절가능하지만, MFC에서는 join()이나 detach() 수행에 따라 싱글스레드와 멀티스레드 사용이 달라지는 것이다.
'Programming > MFC' 카테고리의 다른 글
[MFC] error C2065 IDD_DIALOG : undeclared identifier (0) | 2021.09.06 |
---|---|
[MFC] 데이터 형변환 방법 (0) | 2021.06.24 |
[MFC] MFC에서 자주 쓰이는 녀석들 (0) | 2015.05.11 |
[MFC] MFC를 이용한 도형분석 프로그램 (0) | 2015.05.11 |
[MFC] sprint (0) | 2015.05.11 |