Interface: Thread Arquivos: lib/thread.h Última atualização: 10/02/2002 Autor: Luiz Henrique Shigunov |
Descrição |
Funções | |
|
|
Esta página descreve a interface do usuário Thread.
Todo programa que utilizar mais de uma linha de execução deve usar esta interface para criar e destruir elas.
Programas normalmente precisam de variáveis globais ou variáveis static que têm valores diferentes em diferentes linhas de execução. Como linhas de execução compartilham um mesmo espaço de memória, isso não é possível com variáveis comuns. Variáveis específicas duma linha de execução (thread-specific data - TSD) é a solução.
Cada linha de execução tem uma área privada de memória. Essa área é indexada pelas chaves TSD. Essa área associa valores de tipo void * com as chaves TSD. As chaves TSD são comuns à todas as linhas de execução, mas o valor associado com uma chave TSD pode ser diferente em cada linha de execução.
Quando uma linha de execução é criada todas as chaves TSD têm NULL.
int AllocTSD(unsigned int *key, void (*destructor)(void*));
Esta função aloca uma variável específica duma linha de execução (thread specific data - TSD).
Existe um limite de chaves disponíveis. O valor inicial duma TSD é NULL para todas as linhas de execução.
destructor ainda não é utilizado.
Em caso de sucesso, key vai conter a chave para a TSD.
int Create(int (*function)(void*), void *arg, int prop, Thread **id);
Esta função cria uma linha de execução com as propriedades prop.
A linha de execução vai começar a executar a função function com o argumento arg.
prop deve ser 0 ou o somatório de:
Em caso de sucesso, id vai conter o identificador da linha de execução criada.
int Destroy(Thread *id);
Esta função destrói a linha de execução id.
Se id for NULL, a linha de execução corrente é destruida.
int FreeTSD(unsigned int key);
Esta função libera a variável específica duma linha de execução (thread specific data - TSD) key.
Thread *GetID(void);
Esta função obtém o identificador da linha de execução que chama esta função.
O identificador da linha de execução
void *GetTSD(unsigned int key);
Esta função obtém o valor da TSD key na linha de execução que chama esta função.
int SetTSD(unsigned int key, void *value);
Esta função define o valor da TSD key para value na linha de execução que chama esta função.