Compartilhar via


Multithreading com C++ e MFC

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

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

Um thread é um caminho de execução dentro de um processo.Quando você iniciar o bloco de notas, o sistema operacional cria um processo e começa a executar o thread principal do processo.Quando este segmento termina, portanto, não o processo.Esse thread principal é fornecida para o sistema operacional pelo código de inicialização na forma de um endereço de função.Normalmente, é o endereço de principal ou WinMain função é fornecida.

Você pode criar segmentos adicionais em seu aplicativo se desejar.Convém fazer isso para manipular 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 de auxiliar do framework AfxBeginThread, que cria o CWinThread objeto para você.

MFC distingue dois tipos de segmentos: segmentos de interface do usuário e segmentos de trabalho.Threads de interface do usuário são normalmente usados para manipular entrada do usuário e responder a eventos e mensagens geradas pelo usuário.Threads de trabalho são usados para concluir tarefas, como o recálculo, que não requerem 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 segmentos 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 thread de interface do usuário, porque deriva de CWinThread e trata os eventos e as mensagens geradas pelo usuário.

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

Escrever e depurar a 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 thread por vez.Os tópicos multithreading ensina as noções básicas de programação multithread, apenas como usar MFC em seu programa multithread.Amostras de 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

Suporte a multithreading código antigo (Visual C++)