Programación del sistema Linux 54 cancelación de subprocesos

pthread_cancel (): cancelar hilo

pthread_setcancelstate (): establece si permitir la cancelación

pthread_setcanceltype (): establece el método de cancelación, asincrónico o pospuesto

pthread_testcancel (): establece un punto de cancelación

pthread_detach (): desconexión del hilo


El hilo pthread_join () que recolecta cadáveres mencionado anteriormente debe esperar a que finalice la ejecución del hilo antes de recolectar los cadáveres, y a veces no necesita el hilo objetivo para terminar de ejecutarse, entonces, ¿cómo recolectar los cadáveres?

pthread_cancel () + pthread_join ()


pthread_cancel (): cancelar hilo

NAME
       pthread_cancel - send a cancellation request to a thread 给一个线程发送一个取消请求。

SYNOPSIS
       #include <pthread.h>

       int pthread_cancel(pthread_t thread);//取消线程, thread :需要取消的线程ID

       Compile and link with -pthread.

Para evitar que los recursos solicitados no se puedan reciclar, es necesario establecer el estado de cancelación. Por ejemplo, si el hilo que debe cancelarse acaba de abrir () un archivo, la cancelación en este momento resultará en un error close () y fuga de recursos. Por lo tanto, debe establecer el siguiente estado de la siguiente manera:

Hay dos estados de cancelación:

1 Cancelación permitida

1.1 异步取消
1.2 推迟取消,默认是推迟取消, 推迟到 cancel点 再响应

Punto de cancelación: El punto de cancelación definido por POSIX se refiere a las llamadas al sistema que pueden causar bloqueo.

2 No se permite la cancelación

int pthread_setcancelstate (int state, int * oldstate); // Establecer si se permite la cancelación

int pthread_setcanceltype (int type, int * oldtype); // Establecer el método de cancelación, asincrónico o pospuesto

NAME
       pthread_setcancelstate, pthread_setcanceltype - set cancelability state and type

SYNOPSIS
       #include <pthread.h>

// 设置 是否允许取消
       int pthread_setcancelstate(int state, int *oldstate); 

// 设置取消方式,异步 或者 推迟
       int pthread_setcanceltype(int type, int *oldtype);

       Compile and link with -pthread.

NAME
pthread_testcancel: establece un punto de cancelación

Se aplica a la función función sin ninguna llamada al sistema que pueda causar bloqueo, es decir, en el hilo, se usa para establecer el punto de cancelación para cancelar el hilo.

SYNOPSIS
       #include <pthread.h>

// 本函数 什么都不做,就是一个取消点
       void pthread_testcancel(void);

       Compile and link with -pthread.

pthread_detach (): desconexión del hilo

En circunstancias normales, siempre seguimos los principios de los recursos de Linux: quién los abre, quién los cierra. Quien aplica, quien libera este principio. Pero hay circunstancias especiales: si se crea un hilo y ya no se preocupa por su supervivencia, se puede desvincular, es decir,
pthread_detach ().

Tenga en cuenta que los hilos que han sido separados por pthread_detach () no pueden ser recopilados por pthread_join ()

NAME
       pthread_detach - detach a thread 分离一个线程

SYNOPSIS
       #include <pthread.h>

       int pthread_detach(pthread_t thread);

       Compile and link with -pthread.

Supongo que te gusta

Origin blog.csdn.net/LinuxArmbiggod/article/details/114232088
Recomendado
Clasificación