Compartilhar via


Fibers

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Uma fibra é uma unidade de execução que deve ser manualmente agendada, o aplicativo.

Fibers executar no contexto de segmentos que cronograma-los. Cada segmento pode cronograma múltiplo fibers.

Em geral, fibers não oferecem vantagens sobre uma aplicativo com vários segmentos bem estruturado. No entanto, usar fibers pode facilitar a porta aplicativos que foram criados para cronograma seus próprios segmentos.

Do ponto de vista de sistema, uma fibra assume a identidade do segmento que o criou. De exemplo, se uma fibra acessa segmento local armazenamento (TLS), ele está acessando o TLS do segmento que o criou. Além disso, se uma fibra chama a função ExitThread, o segmento que criou sai.

No entanto, uma fibra não possui todos o mesmo informações do estado associado com ela como que associado com um segmento.

O informações do estado somente mantida por uma fibra é sua pilha, um subconjunto de seus registros e os dados de fibra fornecidos durante a criação de fibra. Os registradores salvos são o conjunto de registros geralmente mantido pela chamar função.

Fibers não estão agendados preemptively. Você cronograma uma fibra alternando para ela a partir de fibra outra.

O sistema ainda agenda segmentos para executar. Quando um segmento execução fibers é precedido, sua execução fibra é precedido. De fibra é executado quando o segmento executa.

Antes de agendar a fibra primeira, chamar a função ConvertThreadToFiber para criar uma área para informações do estado de fibra salvar no. O segmento chamado torna-se de fibra em execução no momento. O informações do estado armazenados para esta fibra inclui os dados de fibra passados como um argumento para ConvertThreadToFiber.

A função CreateFiber é usada para criar uma nova fibra a partir de uma fibra existente.

O chamar tem a seguinte requisitos:

  • Tamanho de pilha, definido como zero.
  • O endereço inicial.
  • Os dados de fibra.

O endereço inicial é geralmente um user-supplied função, a função de fibra, que utiliza um parâmetro, os dados de fibra e não retorna um valor chamado.

Se sua função de fibra retornar, o segmento execução sai de fibra.

Para executar qualquer fibra criada com CreateFiber, chamar a função SwitchToFiber.

Você pode chamar SwitchToFiber Com o endereço de uma fibra criada por um segmento diferente. Para isso, você deve ter o endereço retornado para o outro segmento quando ele chamado CreateFiber e você deve usar sincronização adequada.

Uma fibra pode recuperar os dados de fibra por chamado a macro GetFiberData. Uma fibra pode recuperar o endereço de fibra a qualquer momento por chamado a macro GetCurrentFiber.

Para limpar os dados associado com uma fibra, chamar a função DeleteFiber.

Tome cuidado quando chamado DeleteFiber: Se você chamar DeleteFiber Para uma fibra criada por outro segmento, você pode causar o outro segmento para finalizar de forma anormal.

Se DeleteFiber é chamado a partir de atualmente execução de fibra, suas chamadas segmento ExitThread.

See Also

Concepts

Processes and Threads

Other Resources

Fiber Reference