Partilhar via


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

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

As bibliotecas de tempo de execução LIBCMT e MSVCRT C fornecem as seguintes funções para criação de thread e encerramento: _beginthread, beginthreadex e _endthread, _endthreadex.

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

ObservaçãoObservação

Se você for chamada c rotinas de tempo de execução de um programa construído com Libcmt.lib, você deve iniciar os threads com o _beginthread ou _beginthreadex função.Não use funções Win32 ExitThread e CreateThread.Usando SuspendThread pode levar a um deadlock quando mais de um thread está bloqueado aguardando o thread suspenso concluir 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 segmento compartilha os segmentos de código e dados de um processo com outros segmentos no processo, mas tem seus próprios valores de registro exclusivo, espaço de pilha e endereço de instrução atual.O sistema dá tempo de CPU para cada segmento, para que todos os threads em um processo podem executar simultaneamente.

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

  • Eles inicializarem algumas 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 controle de atributos de segurança.Você pode usar esta função para iniciar um thread em um estado suspenso.

_beginthreade _beginthreadex retorna um handle para o novo thread se bem-sucedida ou um código de erro se ocorreu um erro.

As funções _endthread e _endthreadex

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

Consulte também

Conceitos

Multithreading com c e Win32