Compartilhar via


CreateThread

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função cria um segmento para executar dentro de espaço de endereço da processo de chamada.

Syntax

HANDLE CreateThread(
  LPSECURITY_ATTRIBUTES lpsa,
  DWORD cbStack,
  LPTHREAD_START_ROUTINE lpStartAddr,
  LPVOID lpvThreadParam,
  DWORD fdwCreate,
  LPDWORD lpIDThread
);

Parameters

  • lpsa
    [no] Ignorado. Deve ser NULL.
  • cbStack
    [no] Ignorado, a menos que o sinalizador STACK_SIZE_PARAM_IS_A_RESERVATION é usada. Em que maiúsculas e minúsculas, este parâmetro especifica a memória virtual reservada para o novo segmento.

    Quando ignorado, o tamanho pilha usar como padrão para um segmento é determinado pelo vinculador configuração /STACK.

  • lpStartAddr
    [no] Ponteiro longo para a função Application-defined do tipo LPTHREAD_START_ROUTINE seja executado, o segmento; Representa a endereço inicial do segmento. Para obter mais informações sobre a função segmento, consulte ThreadProc.

    Observação

    É inválido para definir lpStartAddr para NULL.Se esse valor é passado o parâmetro, a função retornará ERROR_INVALID_PARAMETER.

  • lpvThreadParam
    [no] Ponteiro longo para um único 32-bit valor do parâmetro passado para o segmento.
  • fdwCreate
    [no] Especifica os sinalizadores que controle a criação do segmento.

    A seguinte tabela mostra os valores para esse parâmetro.

    Valor Descrição

    CREATE_SUSPENDED

    O segmento é criado em um estado suspenso e não executar até que a função ResumeThread seja chamado.

    O segmento pode ser executar imediatamente após a criação se o sinalizador não for especificado.

    STACK_SIZE_PARAM_IS_A_RESERVATION

    O cbStack parâmetro especificado o tamanho máximo de pilha instead of que está sendo ignorado.

    Este é um sinalizador Windows Embedded CE somente para o CreateThread função e é usado para reserva o tamanho pilha para o segmento criado.

    Por padrão, um segmento é criado com pilha 64 KB reservada. Você pode usar esse sinalizador para aumentar o tamanho pilha para o novo segmento que foi criado.

  • lpIDThread
    [out] Ponteiro longo para um 32-bit variável que recebe o identificador segmento. Se este parâmetro é NULL, identificador de segmento não é retornado.

Return Value

Um identificador para o novo segmento indica sucesso. NULL Indica falha. Para informações de erro estendidas get, chamar GetLastError.

Remarks

O número de segmentos pode criar um processo é limitado pelo disponível memória virtual e depende de como o tamanho pilha usar como padrão.

Se cada segmento possui 1 MB de espaço para pilha, você pode criar no máximo 32 segmentos.

Se você reduzir o tamanho pilha usar como padrão, você pode criar mais segmentos.

O aplicativo irá executar melhor se você criar um segmento por processo e compilar filas de solicitações para o qual o aplicativo mantém informações de contexto. Isso ocorre porque um segmento processa todas as solicitações em uma fila antes solicitações processamento no próximo a fila.

O identificador novo segmento é criado com THREAD_ALL_ACCESS para o novo segmento. O identificador pode ser usado em qualquer função que requer um identificador objeto segmento.

A execução de segmento começa na função especificada pelo lpStartAddr parâmetro. Se esta função retornará, a DWORD valor de retorno é usado para finalizar o segmento em um chamar implícito para a função ExitThread. Use a função GetExitCodeThread para get valor de retorno do segmento.

Se o endereço iniciar é inválido quando o segmento é executado, uma exceção ocorre, e o segmento é encerrado. Segmento terminação devido a um inválido endereço iniciar é tratado como um sair de erro para processo do segmento. Esse comportamento é semelhante de assíncrono natureza do CreateProcess, onde o processo é criado, mesmo se ele se refere ao inválido ou faltando arquivos .dll.

O segmento é criado com uma prioridade segmento de THREAD_PRIORITY_NORMAL.

Use o GetThreadPriority e SetThreadPriority funções para get e definir o valor prioridade de um segmento.

Quando um segmento termina, o objeto segmento atinge um sinalizado estado, que satisfaz segmentos que estavam aguardando sobre o objeto.

O objeto segmento permanece no sistema até que o segmento foi finalizado e todos os identificadores para ela sejam fechados por um chamar para CloseHandle.

A função ExitThread, CreateThread função e um processo que está iniciando (como o resultado de uma chamar por CreateProcess) são serializado entre each other em um processo. Somente um desses eventos pode acontecer em um espaço de endereço em um tempo.

A seguinte lista mostra as restrições durante o processo:

  • Durante a inicialização processo e DLL inicialização rotinas, segmentos podem ser criados, mas eles não comecem a execução até inicialização DLL é feita para o processo.
  • Em um processo, somente um segmento em um tempo pode estar em uma rotina inicialização ou desanexar DLL.

Requirements

Header winbase.h
Library coredll.lib
Windows Embedded CE Windows CE 1.01 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also

Reference

Process and Thread Functions
CreateProcess
ExitThread
GetExitCodeThread
GetThreadPriority
ResumeThread
SetThreadPriority
ThreadProc

Other Resources

CloseHandle