CWinThread

Um objeto de CWinThread representa um thread de execução dentro de um aplicativo. O thread principal de execução é geralmente fornecido por um objeto derivado de CWinApp; CWinApp é derivado de CWinThread. Adicionais CWinThread objetos permitem que Múltiplo segmentos dentro de um determinado aplicativo.

Há dois tipos gerais de segmentos que ofereça suporte a CWinThread : segmentos de trabalho e segmentos de interface do usuário. Threads de trabalho não tem nenhuma bomba de mensagem: por exemplo, um thread que executa cálculos do plano de fundo em um aplicativo de planilha. Segmentos de interface do usuário tem uma bomba mensagem e processam as mensagens recebidas do sistema. CWinApp e classes derivadas dele são exemplos de segmentos de interface do usuário. Outros segmentos de interface do usuário também podem ser derivados diretamente de CWinThread.

Objetos da classe CWinThread normalmente existem para a duração do segmento. Se você quiser modificar esse comportamento, defina m_bAutoDelete como FALSE.

A classe CWinThread é necessária para tornar seu código e MFC totalmente thread-safe. Segmento-local dados usados pela estrutura para manter informações específicas de threads são gerenciados pelo CWinThread objetos. Devido a essa dependência em CWinThread para lidar com dados de thread-local, qualquer segmento que usa o MFC deve ser criado pelo MFC. Por exemplo, um thread criado pela função tempo de execução beginthreadex não pode usar quaisquer APIs do MFC.

Para criar um thread, chame AfxBeginThread. Existem duas formas, dependendo se você deseja um thread de trabalho ou interface do usuário. Se você quiser um thread de interface do usuário, passar para AfxBeginThread um ponteiro para o CRuntimeClass do seu CWinThread-classe derivada. Se você quiser criar um thread de trabalho, passe para AfxBeginThread , um ponteiro para a função de controlar e o parâmetro para a função controlar. Para threads de trabalho e segmentos de interface do usuário, você pode especificar parâmetros opcionais que modificar a prioridade, tamanho da pilha, sinalizadores de criação e atributos de segurança. AfxBeginThread retornará um ponteiro para o novo objeto de CWinThread.

Em vez de chamar AfxBeginThread, você pode construir um CWinThread-derivado objeto e, em seguida, chamar CreateThread. Este método de construção de dois estágios é útil se você quiser reutilizar o objeto CWinThread entre sucessiva criação e terminações de execuções de thread.

Para obter mais informações sobre CWinThread, consulte os artigos Multithreading com C++ e MFC, Multithreading: criação de segmentos de Interface do usuário, Multithreading: criação de segmentos de trabalho, e Multithreading: como usar as Classes de sincronização no Guia do programador do Visual C++.

Membros da classe |nbsp; Classe base | Gráfico de hierarquia

Amostra  MFC exemplo MTGDI

Co&nsulte tambémnbsp;CWinApp, CCmdTarget

Index