CreateThread
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