Compartilhar via


Funções de biblioteca de tempo de execução c para o controle de segmento

Todos os programas do Win32 têm pelo menos um segmento. Qualquer segmento pode criar threads adicionais. Um thread pode concluir seu trabalho rapidamente e, em seguida, encerrar ou ele pode permanecer ativo durante a vida útil do programa.

As bibliotecas de tempo de execução LIBCMT e MSVCRT C oferecem as seguintes funções de terminação e criação do thread: _beginthread, _beginthreadex and _endthread, _endthreadex.

O _beginthread e _beginthreadex criar um novo segmento de funções e retornar um identificador de segmento, se a operação for bem-sucedida. O segmento termina automaticamente se ele conclui a execução ou ele pode ser encerrado propriamente dito com uma chamada para _endthread ou _endthreadex.

ObservaçãoObservação

Se você for para chamar as rotinas de tempo de execução c de um programa construído com Libcmt.lib, você deve iniciar os threads com o _beginthread ou _beginthreadex função. Não use as funções do Win32 ExitThread e CreateThread. Usando SuspendThread pode levar a um deadlock quando mais de um thread estiver bloqueado, aguardando o thread suspenso concluir o seu acesso a uma estrutura de dados de tempo de execução C.

As funções _beginthread e _ beginthreadex

O _beginthread e _beginthreadex funções de criar um novo thread. Um thread compartilha os segmentos de código e dados de um processo com outros segmentos no processo, mas tem seu próprio valores de registro exclusivo, o espaço de pilha e o endereço da instrução atual. O sistema dá tempo de CPU para cada segmento, para que todos os threads em um processo podem ser executadas simultaneamente.

_beginthreade _beginthreadex são semelhantes do CreateThread a função da API do Win32, mas tem essas diferenças:

  • Inicializar o determinadas variáveis de biblioteca de tempo de execução C. Isso é importante apenas se você usar a biblioteca de tempo de execução c em seus segmentos.

  • CreateThreadAjuda a fornecer o controle sobre os atributos de segurança. Você pode usar esta função para iniciar um segmento em um estado suspenso.

_beginthreade _beginthreadex retorna um handle para o novo thread, se for bem-sucedido ou um código de erro se houve um erro.

As funções _endthread e _endthreadex

O _endthread função encerra um thread criado por _beginthread (e da mesma forma, _endthreadex Finaliza um thread criado por _beginthreadex). Threads encerrar automaticamente quando termina. _endthreade _endthreadex são úteis para terminação condicional de dentro de um segmento. Um thread dedicado a comunicações de processamento, por exemplo, pode encerrar se não for possível obter o controle da porta de comunicações.

Consulte também

Conceitos

Multithreading com c e Win32