참고 : https://popcorntree.tistory.com/84?category=813524
[05. 멀티쓰레드] 멀티쓰레드 1 (프로세스와 스레드, 문제점-DataRace)
*이 글의 내용은 한국산업기술대학교 게임공학부 정내훈 교수님의 수업을 듣고 정리한 내용입니다. 멀티쓰레드 지금까지 내용 정리 게임서버에서 가장 중요한 것 안정성 성능 성능을 높이려
popcorntree.tistory.com
https://woo-dev.tistory.com/164
[C++] std::thread 기본 활용 방법을 알아보자 | mutex, condition_variable, 종료 방법
개인적으로 공부하는 내용이므로 틀린 부분이 있을 수 있습니다. 있다면 알려주세요 :) 1. 공유 자원에 대한 race condition 해결하기 (mutex) 하나의 프로세스 내에 두 개 이상의 스레드가 존재하는 멀
woo-dev.tistory.com
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 |