Variáveis de ambiente Unix - conceitos básicos de thread

 

int pthread_equal (pthread_t tid1, pthread_t tid2);

Arquivo de cabeçalho: #include <pthread.h>

Valor de retorno: se igual, retorna valor diferente de zero, caso contrário, retorna valor zero

Função: determinar se os dois IDs de thread são iguais

pthread_t pthread_self (vazio);

Arquivo de cabeçalho: #include <pthread.h>

Valor de retorno: o ID do thread do thread de chamada

int pthread_create (pthread_t * tidp, const pthread_attr_t * attr, void * (* start_rtn) (void *), void * restrito arg);

Arquivo de cabeçalho: #include <pthread.h>

Parâmetros: tidp: armazena o ID do segmento do novo segmento,

attr: Usado para personalizar vários atributos de thread, NULL para criar um thread com atributos padrão.

start_rtn: O thread recém-criado é executado a partir do endereço da função start_rtn, que tem apenas um parâmetro de ponteiro não digitado arg


Existem três maneiras de encerrar uma discussão:

(1) int pthread_cancel (thread pthread_t); 

Função: solicitar a saída do thread de thread especificado do mesmo processo, mas não é certo se ele realmente terá efeito

(2) int pthread_exit (void * estado); 

Função: Sair do tópico atual e retornar ao status

(3) A função thread retorna diretamente

int pthread_join (thread pthread_t, void ** retval);

Parâmetros: pthread_t thread: thread id do thread em espera

void ** retval: O código de erro retornado pelo thread em espera, incluindo o status da função pthread_exit () ou retorno direto

Nota: Esta função só tem efeito para aqueles cujos atributos de thread não estão separados, caso contrário, retornará diretamente o erro EINVAL.

int pthread_detach (pthread_t tid);

Função: separar o tópico especificado


Aplicações avançadas de threads:

void pthread_cleanup_push (void (* rtn) (void *), void * arg);

Parâmetros: rtn: um ponteiro de função, apontando para uma função de limpeza personalizada

arg: parâmetros passados ​​para a função de limpeza

Função: Esta função é usada para colocar (ou registrar) uma função no topo de uma pilha de funções de limpeza.

Arquivo de cabeçalho: #include <pthread.h>

  void pthread_clean_pop (int executar);

  Arquivo de cabeçalho: #include <pthread.h>

Parâmetro: execute: quando for zero, remove a função de limpeza enviada (ou registrada) por pthread_cleanup_push (). Quando for diferente de zero, significa executar a função de limpeza enviada (ou registrada) por pthread_cleanup_push ().

Nota: (1) Quando um thread é cancelado, essas funções de limpeza serão executadas na ordem inversa do registro push e serão removidas da pilha após a execução

(2) Quando o encadeamento é encerrado chamando a função pthread_exit (), essas funções de limpeza são chamadas, mas se a instrução return for usada para encerrar o encadeamento, essas funções de limpeza não serão chamadas

(3) Quando a função pthread_cleanup_pop () é chamada e seu parâmetro é diferente de zero, a função de limpeza no topo da pilha é chamada para ser executada e, após a execução, a função de limpeza é removida da pilha

(4) A chamada para a função pthread_cleanup_push () e a função pthread_clean_up () deve aparecer em pares, caso contrário, o erro de compilação

Acho que você gosta

Origin blog.csdn.net/Chiang2018/article/details/105418654
Recomendado
Clasificación