Multithreading com C++ e MFC

A biblioteca Microsoft Foundation Class (MFC) oferece suporte para aplicativos multithread. Este tópico descreve os processos e threads e a abordagem do MFC para multithreading.

Um processo é uma instância de um aplicativo em execução. Por exemplo, quando você clica duas vezes no ícone do bloco de notas, iniciar um processo que executa o bloco de notas.

Um segmento é um caminho de execução dentro de um processo. Quando você inicia o bloco de notas, o sistema operacional cria um processo e começa a executar o thread principal do processo. Quando esse thread é encerrado, aumenta também o processo. Esse thread principal é fornecido para o sistema operacional pelo código de inicialização na forma de um endereço da função. Normalmente, é o endereço da principal ou WinMain função é fornecida.

Você pode criar threads adicionais em seu aplicativo, se desejar. Convém fazer isso para lidar com tarefas de manutenção ou de plano de fundo quando você não deseja que o usuário esperar concluir. Todos os threads de aplicativos MFC são representados por CWinThread objetos. Na maioria das situações, você ainda precisa criar explicitamente esses objetos; em vez disso, chame a função auxiliar do framework AfxBeginThread, que cria o CWinThread o objeto para você.

MFC distingue dois tipos de segmentos: os segmentos de interface do usuário e segmentos de trabalho. Threads de interface do usuário são usados para manipular a entrada do usuário e responder a eventos e mensagens geradas pelo usuário. Threads de trabalho são normalmente usados para concluir tarefas, como o recálculo, que não exigem entrada do usuário. A API do Win32 não faz distinção entre tipos de threads; Ele só precisa saber o endereço inicial do segmento para que possa começar a executar o thread. MFC manipula os threads de interface do usuário especialmente fornecendo uma bomba de mensagem para eventos na interface do usuário. CWinAppé um exemplo de um objeto de segmento de interface do usuário, porque deriva de CWinThread e alças de eventos e mensagens geradas pelo usuário.

Deve ser dada atenção especial às situações onde mais de um segmento pode exigir acesso ao mesmo objeto. Multithreading: Dicas de programação descreve técnicas que você pode usar para solucionar problemas que podem surgir nessas situações. Multithreading: Como usar as Classes de sincronização descreve como usar as classes que estão disponíveis para sincronizar o acesso de vários threads para um único objeto.

Criação e depuração de programação multithread de é inerentemente um empreendimento complicado e difícil, porque você deve garantir que objetos não são acessados por mais de um segmento por vez. Os tópicos de multithreading não ensinar as noções básicas de programação multithread, só como usar MFC em seu programa multithread. As amostras MFC multithread incluídas no Visual C++ ilustram algumas adicionando funcionalidade multithread e APIs do Win32 não circundado pelos MFC; No entanto, eles só devem ser um ponto de partida.

Para obter mais informações sobre como o sistema operacional lida com processos e threads, consulte processos e Threads na Windows SDK.

Para obter mais informações sobre o suporte a multithreading MFC, consulte os seguintes tópicos:

Consulte também

Conceitos

Multiencadeamento