다음을 통해 공유


C++ 및 MFC에서 다중 스레딩

MFC(Microsoft Foundation Class) 라이브러리는 다중 스레드 애플리케이션을 지원합니다. 이 항목에서는 프로세스와 스레드 및 다중 스레딩에 대한 MFC 접근 방식에 대해 설명합니다.

프로세스는 애플리케이션의 실행 중인 인스턴스입니다. 예를 들어 메모장 아이콘을 두 번 클릭하면 메모장을 실행하는 프로세스가 시작됩니다.

스레드는 프로세스 내에서 실행 경로입니다. 메모장을 시작하면 운영 체제에서 프로세스를 만들고 해당 프로세스의 기본 스레드 실행을 시작합니다. 이 스레드가 종료되면 프로세스도 종료됩니다. 이 기본 스레드는 함수 주소 형식의 시작 코드에 의해 운영 체제에 제공됩니다. 일반적으로 제공된 함수 또는 WinMain 함수의 main 주소입니다.

원하는 경우 애플리케이션에서 추가 스레드를 만들 수 있습니다. 사용자가 완료될 때까지 기다리지 않으려는 경우 백그라운드 또는 유지 관리 작업을 처리하도록 이 작업을 수행할 수 있습니다. MFC 애플리케이션의 모든 스레드는 CWinThread 개체로 표시됩니다. 대부분의 경우 이러한 개체를 명시적으로 만들 필요가 없습니다. 대신 개체를 만드는 프레임워크 도우미 함수 AfxBeginThreadCWinThread 호출합니다.

MFC는 사용자 인터페이스 스레드와 작업자 스레드의 두 가지 유형의 스레드를 구분합니다. 사용자 인터페이스 스레드는 일반적으로 사용자 입력을 처리하고 사용자가 생성한 이벤트 및 메시지에 응답하는 데 사용됩니다. 작업자 스레드는 일반적으로 사용자 입력이 필요하지 않은 재계산과 같은 작업을 완료하는 데 사용됩니다. Win32 API는 스레드 형식을 구분하지 않습니다. 스레드 실행을 시작할 수 있도록 스레드의 시작 주소를 알아야 합니다. MFC는 사용자 인터페이스의 이벤트에 대한 메시지 펌프를 제공하여 사용자 인터페이스 스레드를 특별히 처리합니다. CWinApp 는 사용자가 생성한 이벤트 및 메시지에서 CWinThread 파생되고 처리되기 때문에 사용자 인터페이스 스레드 개체의 예입니다.

두 개 이상의 스레드가 동일한 개체에 액세스해야 하는 상황에 특히 주의해야 합니다. 다중 스레딩: 프로그래밍 팁 은 이러한 상황에서 발생할 수 있는 문제를 해결하는 데 사용할 수 있는 기술을 설명합니다. 다중 스레딩: 동기화 클래스 를 사용하는 방법은 여러 스레드에서 단일 개체로 액세스를 동기화하는 데 사용할 수 있는 클래스를 사용하는 방법을 설명합니다.

다중 스레드 프로그래밍을 작성하고 디버깅하는 작업은 기본적으로 복잡하고 까다로운 작업입니다. 한 번에 둘 이상의 스레드에서 개체에 액세스하지 않도록 해야 하기 때문입니다. 다중 스레딩 항목에서는 다중 스레드 프로그래밍의 기본 사항을 학습하지 않고 다중 스레드 프로그램에서 MFC를 사용하는 방법만 학습합니다. Visual C++에 포함된 다중 스레드 MFC 샘플은 MFC에 포함되지 않은 몇 가지 다중 스레드 추가 기능 및 Win32 API를 보여 줍니다. 그러나 시작 지점으로만 사용됩니다.

운영 체제에서 프로세스 및 스레드를 처리하는 방법에 대한 자세한 내용은 Windows SDK의 프로세스 및 스레드를 참조하세요.

MFC 다중 스레딩 지원에 대한 자세한 내용은 다음 항목을 참조하세요.

참고 항목

이전 코드를 위한 다중 스레드 지원(Visual C++)