Função CreateFiber (winbase.h)
Aloca um objeto de fibra, atribui-lhe uma pilha e configura a execução para começar no endereço inicial especificado, normalmente a função de fibra. Essa função não agenda a fibra.
Para especificar um tamanho de pilha de confirmação e reserva, use a função CreateFiberEx .
Sintaxe
LPVOID CreateFiber(
[in] SIZE_T dwStackSize,
[in] LPFIBER_START_ROUTINE lpStartAddress,
[in, optional] LPVOID lpParameter
);
Parâmetros
[in] dwStackSize
O tamanho inicial confirmado da pilha, em bytes. Se esse parâmetro for zero, a nova fibra usará o tamanho de pilha de confirmação padrão para o executável. Para obter mais informações, consulte Tamanho da pilha de threads.
[in] lpStartAddress
Um ponteiro para a função definida pelo aplicativo a ser executada pela fibra e representa o endereço inicial da fibra. A execução da fibra recém-criada não começa até que outra fibra chame a função SwitchToFiber com esse endereço. Para obter mais informações sobre a função de retorno de chamada de fibra, consulte FiberProc.
[in, optional] lpParameter
Um ponteiro para uma variável que é passada para a fibra. A fibra pode recuperar esses dados usando a macro GetFiberData .
Valor retornado
Se a função for bem-sucedida, o valor retornado será o endereço da fibra.
Se a função falhar, o valor retornado será NULL. Para obter informações de erro estendidas, chame GetLastError.
Comentários
O número de fibras que um processo pode criar é limitado pela memória virtual disponível. Por exemplo, se você criar cada fibra com 1 megabyte de espaço de pilha reservado, poderá criar no máximo 2028 fibras. Se você reduzir o tamanho da pilha padrão usando a instrução STACKSIZE no arquivo de definição de módulo (.def) ou usando CreateFiberEx, poderá criar mais fibras. No entanto, seu aplicativo terá melhor desempenho se você usar uma estratégia alternativa para processar solicitações em vez de criar um número tão grande de fibras.
Antes que um thread possa agendar uma fibra usando a função SwitchToFiber , ele deve chamar a função ConvertThreadToFiber para que haja uma fibra associada ao thread.
Para compilar um aplicativo que usa essa função, defina _WIN32_WINNT como 0x0400 ou posterior. Para obter mais informações, consulte Usando os cabeçalhos do Windows.
Exemplos
Para obter um exemplo, consulte Usando fibras.
Requisitos
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | winbase.h (inclua Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |