Multithreading com C++ e do MFC

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

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

A thread é 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 isso 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 do principal or WinMain função que é fornecida.

Você pode criar threads adicionais em seu aplicativo se você desejar.Convém fazer isso para lidar com tarefas de manutenção ou 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, não é mesmo necessário criar explicitamente esses objetos; em vez disso telefonar auxiliar estrutura funcionar 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 usados para manipular a entrada do usuário e responder a eventos e mensagens geradas pelo usuário.Threads de trabalho são usados para concluir tarefas, sistema autônomo 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 lida com segmentos de interface do usuário especialmente, fornecendo uma bomba de mensagem para os eventos na interface do usuário.CWinApp é um exemplo de uma interface de usuário thread o objeto, pois ela 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 thread pode requerer o acesso ao mesmo objeto.Multithreading: Programação dicas descreve técnicas que você pode usar para solucionar problemas que possam surgir nessas situações.Multithreading: Como usar a sincronização classes descreve como usar as classes que estão disponível para sincronizar o acesso de vários threads a um único objeto.

Criação e depuração de programação multissegmentada são inerentemente uma tarefa complicada e complicada, pois você deve garantir que objetos não são acessados por mais de um segmento por vez.Os tópicos multithreading não ensinar as noções básicas sobre a programação multithread, apenas como usar MFC em seu programa multithread.As Exemplos MFC multithread incluídas no Visual C++ ilustram algumas multithread adicionando funcionalidade e as APIs do Win32 não abrangida pelo 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 in the Windows SDK.

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

Consulte também

Conceitos

Multiencadeamento