블로그 이미지
Kanais
Researcher & Developer 퍼즐을 완성하려면 퍼즐 조각들을 하나 둘씩 맞춰나가야 한다. 인생의 퍼즐 조각들을 하나 둘씩 맞춰나가다 보면 인생이란 퍼즐도 완성되는 날이 오려나...?

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Notice

04-20 14:28

Recent Post

Recent Comment

Recent Trackback

Archive

2021. 7. 28. 10:49 Programming/MFC

참고 : 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() 수행에 따라 싱글스레드와 멀티스레드 사용이 달라지는 것이다. 

posted by Kanais