PTHREAD_EXIT 3 C Función

PTHREAD_EXIT 3 C Función
"Es posible que haya pasado por muchas funciones de Posix C mientras usa cualquier sistema operativo Linux. La función pthread_exit () es una de esas funciones de Posix. El pthread_exit () se utiliza para terminar la ejecución del hilo llamado. El hilo de llamada se termina usando la función pthread_exit (), y su ejecución se suspende usando la función pthread_join () hasta que el hilo de destino ha completado su ejecución. Entonces, termina el hilo de llamada y envía el estado a cualquier hilo que use la ID de subproceso del hilo de terminación para llamar a pthread_join (). Dentro de este tutorial, echaremos un vistazo al uso de la función pthread_kill en c."

En primer lugar, debe iniciar sesión desde el sistema Linux y iniciar su terminal. Dentro del shell, intente crear un archivo C usando el editor VIM y nombrarlo pthread_kill.C. Cuando se abra en el editor VIM en modo de inserción, escriba las líneas de código a continuación en él.

Los archivos de encabezado esenciales se incorporan en las primeras tres líneas de código, y luego se declara el encabezado de la función para la función de mensaje de visualización, que acepta un puntero vacío. Crear una variable global después de eso y establecer su valor en 0. Se declaran dos variables de tipo pthread_t llamadas thread_p & thread_s. Pthread_t es un tipo de datos utilizado para identificar un hilo que se ha creado en la función principal. Cuando el programa realiza la función que llama para una identificación de hilo, toma el valor devuelto por la función pthread_create ().

Las variables de puntero de dos caracteres que se utilizan para almacenar el mensaje para los hilos primarios y secundarios se definen en las siguientes líneas de código. Luego se definen dos enteros, con valores de 100 y 200, respectivamente. Después de eso, hicimos dos hilos separados, cada uno de los cuales usa el método de mensaje de visualización. Envíe los identificadores y mensajes de hilo generados individualmente a cada hilo por separado; Después de esa impresión, se llama la declaración, que es el mensaje antes de la terminación de los subprocesos. Cuando salimos o terminamos los subprocesos, toda la ejecución está suspendida y no se mostrará ninguna salida. La variable global se incrementa por 1 en la función de mensaje de visualización.

Consulte los archivos y carpetas disponibles en el directorio de trabajo ingresando el comando LS en la línea de comando del terminal.

Ingrese los comandos que se enumeran a continuación para crear un archivo que contenga declaraciones relacionadas con los subprocesos porque difieren de las instrucciones de compilación estándar. El comando se inicia con el compilador porque estamos utilizando el compilador GCC y el sistema operativo Linux. El interruptor -pThread se emplea luego. Después de especificar el nombre del archivo con el indicador -o, el archivo de salida se creará con el nombre solicitado.

Simplemente ingrese el comando (./Pthread Kill.out) en el terminal para ejecutar el archivo de salida y ver los resultados. No se ejecutará ninguna declaración después de la instrucción anterior ya que ambos subprocesos se finalizan utilizando la función pthread_exit. Tan pronto como se ha establecido el hilo primario, llama al método de mensaje de visualización, incrementando el valor de la variable global de 0 a 1, que luego se muestra. Similar a eso, se invoca un segundo hilo, que muestra el valor de la variable global después de un incremento, lo que resulta en un valor de 2.

Ahora cree otro archivo de código de programación C usando el editor VIM y escriba el código en él. El nombre del archivo es pthread_exit.C.

Los archivos de encabezado vital se incorporan en las dos primeras líneas del archivo de código. A partir de eso, se declaró una variable global, y su valor se estableció en 0. Luego se escribe la función de visualización y se le da un parámetro de tipo de puntero vacío. Todos los hilos que creamos en nuestra función principal ejecutarán este código. El valor de argumento de la variable de ID de hilo se almacena en la primera línea de la función. Ahora que una variable estática se ha definido y establecido en 0, su valor se modificará dentro de la función. Luego, imprimimos el ID de subproceso y los valores de las variables globales y estáticas después de incrementarlas.

Use el compilador GCC para compilar el código C con la opción -PTHREAD, luego guarde la salida en la salida PTHREAD.archivo. Solo un hilo puede completar su ejecución, ya que usamos la misma ID de subprocesamiento para generar varios hilos y luego salir del hilo dentro del bucle.

Aquí está la salida del archivo después de una compilación exitosa. Significa que si se termina algún hilo utilizando una declaración de salida, no se ejecutará ningún otro hilo.

Cada hilo se genera y ejecuta correctamente si modificamos ligeramente el código cambiando la instrucción de salida y moviendo la línea fuera del bucle. Este es el código que se da en el fragmento a continuación:

Después de la compilación y cuando ejecutamos el archivo de salida, se generará la salida a continuación, que muestra que todos los subprocesos completaron su ejecución. La salida muestra que los valores de las variables globales y estáticas son los mismos para todos los subprocesos, lo que significa que se usa la misma referencia de hilos.

Cambiemos un poco más nuestro código y comentemos la instrucción pthread_exit al final de la función de visualización. Aquí está la pantalla del código:

Aquí está la captura de pantalla de salida del código anterior. Solo solo se ejecutan tres hilos; Puede ver los valores de las variables globales y estáticas. El segundo y tercer hilos tienen los mismos valores para ambos.

Conclusión

Este artículo trata sobre el uso de la función pthread_kill en c para finalizar el procesamiento de un hilo de llamada en un programa, pero el proceso de terminación de la función de llamada debe detenerse durante un tiempo utilizando el método pthread_join () hasta que el método de destino esté logrado. Puede hacer uso de los ejemplos simples demostrados anteriormente para obtener una comprensión clara.