Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A biblioteca Microsoft Foundation Class (MFC) fornece suporte para aplicativos multithreaded. Este tópico descreve processos e threads e a abordagem MFC para multithreading.
Um processo é uma instância de execução de um aplicativo. Por exemplo, quando você clica duas vezes no ícone do bloco de notas, você inicia um processo que executa o bloco de notas.
Um 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 primário desse processo. Quando esse thread termina, o processo também termina. Este thread primário é fornecido ao sistema operacional pelo código de inicialização na forma de um endereço de função. Normalmente, é fornecido o endereço da função main ou WinMain.
Você pode criar threads adicionais em seu aplicativo, se desejar. Talvez você queira fazer isso para lidar com tarefas em segundo plano ou de manutenção quando não quiser que o usuário aguarde a conclusão delas. Todos os threads em aplicativos MFC são representados por objetos CWinThread . Na maioria das situações, você nem precisa criar explicitamente esses objetos; em vez disso, chame a função auxiliar da estrutura AfxBeginThread, que cria o CWinThread objeto para você.
MFC distingue dois tipos de threads: threads de interface do usuário e threads de trabalho. Os threads da interface do usuário são comumente usados para lidar com a entrada do usuário e responder a eventos e mensagens gerados pelo usuário. Os threads de trabalho são comumente usados para concluir tarefas, como recálculo, que não exigem entrada do usuário. A API do Win32 não distingue entre tipos de threads; ele só precisa saber o endereço inicial do thread para que possa começar a executá-lo. MFC lida com 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 thread de interface do usuário, porque deriva CWinThread e manipula eventos e mensagens gerados pelo usuário.
Atenção especial deve ser dada a situações em que mais de um thread pode exigir acesso ao mesmo objeto. Multithreading: Dicas de Programação descreve técnicas que você pode usar para contornar problemas que podem surgir nessas situações. Multithreading: How to Use the Synchronization Classes descreve como usar as classes disponíveis para sincronizar o acesso de vários threads a um único objeto.
Escrever e depurar programação com múltiplos threads é inerentemente uma tarefa complexa e desafiadora, porque é necessário garantir que os objetos não sejam acessados por mais de um thread de cada vez. Os tópicos de multithreading não ensinam os conceitos básicos de programação multithread, apenas como usar MFC no seu programa multithread. Os exemplos multithreaded do MFC incluídos no Visual C++ ilustram algumas funcionalidades de adição multithreaded e APIs Win32 que não estão incluídas no MFC; no entanto, destinam-se apenas a ser um ponto de partida.
Para obter mais informações sobre como o sistema operacional lida com processos e threads, consulte Processos e threads no SDK do Windows.
Para obter mais informações sobre o suporte a multithreading MFC, consulte os seguintes tópicos:
Ver também
Suporte a multithreading para código mais antigo (Visual C++)