m_thread.join(); 을 사용할 경우, Main Thread는 m_thread의 작업이 끝날 때까지 기다려 준다. 즉, m_thead의 작업이 끝나기 전까지는 다른 작업을 하지 않으므로, 멀티스레스를 사용하는 것이 아닌, 싱글 스레드를 사용하는 것과 같은 결과를 얻는다.
m_thread.detach(); 를 사용할 경우, Main Thread는 m_thread의 작업이 끝날 때까지 기다리지 않고, 자신의 다른 작업을 수행한다. 이 때, detach()한 스레드는 자신만의 작업을 수행한다. 즉, 멀티스레드로 작업을 수행한다.
C#에서는 스레드의 사용을 객체 생성하고 실행하는 것만으로도 싱글스레드와 멀티스레드 사용을 프로그래머가 조절가능하지만, MFC에서는 join()이나 detach() 수행에 따라 싱글스레드와 멀티스레드 사용이 달라지는 것이다.