Ejemplo 01:
Tengamos el primer ejemplo para ver el funcionamiento de la función pthread_detach. Comience con el terminal lanzándolo, yo.mi., Ctrl+Alt+T. Usaremos comandos específicos para crear un archivo C, abrirlo y ejecutarlo. El primer comando es generar un nuevo archivo con él, yo.mi., tocar. Este nuevo archivo debe abrirse en un editor de este tipo en el que podemos agregarle código y hacer cambios en él también. Hemos estado usando el editor "nano" aquí a través de su comando.
Hemos comenzado la implementación del primer ejemplo con algunos archivos de encabezado que se necesitan para que este código se ejecute. Nuestro código contiene dos funciones definidas por el usuario y 1 método main (). Como la ejecución siempre comienza desde el método main (), también iniciamos la explicación desde el main (). La función main () se llama método "createt" en su primera línea. Ahora el control se da a la función "Createt". Esta función crea un objeto "th" para obtener la identificación del hilo usando pthread_t incorporado mutable. La declaración printf muestra que actualmente estamos en el hilo principal o 1calle función.
La función "pthread_create" se usa aquí para crear un nuevo hilo en esta función utilizando el nombre de otra función, i.mi., Nuevo y vinculante la variable "th" para hacer referencia a la identificación. La instrucción "IF" se utiliza para verificar si esta función principal () y otros hilos recién creados son iguales o no. Esto se ha hecho equiparando las ID de ambos hilos. La referencia mutable "th" al nuevo hilo y pthread_self () devuelve la ID de la función "Createt". Si ambos hilos coinciden, imprimirá "los hilos son mismos"; De lo contrario, “los hilos no son los mismos."La función pthread_Join () asegura que la ejecución del hilo principal se termine hasta que el nuevo hilo se ejecute y no se complete. Ahora el control ha terminado completamente al nuevo hilo.
En el nuevo hilo, la función de sueño se usa. Entonces, el sistema dormirá durante 10 segundos, y después de eso, se llevará a cabo una mayor ejecución. La función pthread_detach () está aquí para separar completamente el nuevo hilo de su función de llamada, i.mi., "Createt."Aquí, pthread_self () se usa para descubrir la identificación del 'nuevo hilo' para separar. La instrucción printf mostrará que este hilo de funciones saldrá ahora. El sistema dormirá durante los próximos 10 segundos nuevamente utilizando el mismo método "Sleep ()" de C. La función pthread_exit () está aquí para terminar rápidamente el hilo actual, que es ahora "nuevo."Ahora, el control se devuelve a la función" Createt ". Después de volver en este hilo principal, hemos encontrado una nueva declaración de printf para mostrar que estamos de vuelta en la función "Createt". Ahora, necesitamos usar otra función pthread_exit () para cerrar también el hilo de "creación" y devolver el control a la función principal (). Entonces, lo hemos hecho hasta ahora, y el control se devuelve. Aquí, el programa termina. Como el programa está terminado, necesitamos compilarlo con el compilador C en Ubuntu 20.04.
Debe asegurarse de que el compilador C ya esté configurado en su máquina final. Hemos estado utilizando el compilador GCC en nuestro caparazón. Entonces, el nombre de un archivo con la palabra clave "-lpThread" se usa para compilar el código según la imagen a continuación.
Después de compilar el código, tenemos que ejecutarlo para ver la salida. El comando para la ejecución es "./a.Fuera "como se muestra. Cuando hemos ejecutado el archivo de código, inició la función principal y la función main () llamada la función "createt". La declaración printf de "createt" se muestra "hilo principal interno" y creó un nuevo hilo llamado nuevo. Se ha realizado una comparación de ambos hilos, y devuelve ambos hilos no son los mismos. Luego, un sistema duerme durante 10 segundos.
Después de 10 segundos, se une al hilo creado nuevo. El nuevo hilo se ha separado de la función "Createt" y ha demostrado que estamos en la función de hilo "nueva". El sistema vuelve a dormir durante los próximos 10 segundos y sale del nuevo hilo.
Ahora, el control ha terminado al hilo de "Createt", y ha surgido que estamos de vuelta en el hilo principal. Después de completar el hilo "Createt", la función Main () ha recibido control. Por lo tanto, el programa termina aquí con éxito.
Ejemplo 02:
Echemos un vistazo bastante diferente al ejemplo de la función pthread_detach en c. Hemos comenzado nuestro código C con los mismos encabezados de la biblioteca con la palabra clave #include para que nuestro código sea ejecutable. 1 función main () y 1 función definida por el usuario llamada "nueva" se define. La función "nueva" se utilizará como funciones de hilos. Estamos comenzando la explicación de un método principal (). El PTHEAD_T mutable declara la variable "th" para obtener el ID de subproceso de un nuevo hilo. La declaración Printf muestra que hemos comenzado la función principal y cuesta 10 segundos con el método "Sleep". La siguiente printf muestra que se creará una función de subproceso y la función pthread_create () de POSIX se usa por este motivo hasta ahora.
El "th" se usa como parámetro para la función de creación de nuevos hilos para obtener la identificación de un nuevo hilo. La función pthread_join () está aquí para suspender completamente la ejecución de un método main () hasta que el nuevo hilo, i, i.mi., Nuevo, se está ejecutando. Ahora, se inicia la nueva función. La función pthread_detach () está aquí para separar completamente esta función de la función main () recuperando sus recursos. La función pthread_exit () asegurará que el nuevo hilo ya no se ejecute. Por lo tanto, su declaración printf no se ejecutará. El hilo main () se terminará después de ejecutar su función pthread_exit ().
Comencemos con la compilación de código con GCC. Agradecidamente! Fue un exito.
Entonces, hemos estado utilizando lo mismo "./a.instrucción de fuera "aquí también. La función main () comenzó a ejecutar primero a medida que sale de la instrucción de impresión. Ahora, el sistema duerme durante 10 segundos.
Después de 10 segundos, la siguiente declaración de impresión se ejecuta y se muestra que se crea el nuevo hilo. El control ha terminado al nuevo hilo, y se separa de la función Main () sin ejecutar su instrucción printf. Por lo tanto, nuestra salida es algo así como a continuación.
Conclusión:
Entonces, se trataba de usar la función pthread_detach de Posix en C para separar completamente un hilo del hilo de llamadas principales. Al mantenerlo bastante simple y explicar las ilustraciones brevemente, hemos hecho todo lo posible para que comprenda estos ejemplos implementados en Ubuntu 20.04.