Programación en C

Hilo POSIX con programación en C

Hilo POSIX con programación en C
Un hilo es una pequeña instancia que se ejecuta dentro de un proceso. Los subprocesos se combinan para crear un proceso y tienen algunas propiedades del proceso; por tanto, se consideran procesos ligeros. El hilo no es independiente, como un proceso. Más bien, trabajan juntos para compilar y crear un proceso. Aún así, al igual que un proceso, un hilo también tiene su propia PC (Contador de programa) y un registro particular establecido junto con el espacio de pila.

Hilo POSIX:

En las plataformas Linux, los lenguajes C y C ++ pthread API estándar para todo tipo de funciones relacionadas con subprocesos. También se conoce como un hilo POSIX que permite a los usuarios crear muchos hilos para que fluyan procesos simultáneos. Se utiliza mejor en sistemas o procesadores de varios núcleos para implementar subprocesos en el kernel para lograr que el sistema.

Implementación:

Es necesario incluir este pthread.h archivo de encabezado en el script inicialmente. Esto ayudará a utilizar las funciones de la biblioteca pthreads. Para ejecutar el archivo c, los siguientes comandos

$ cc -pthread archivo.C

O

$ cc -lpthread archivo.C

Las funciones que se definen en la biblioteca pthreads pueden incluir:

pthread_create:

Se usa para crear un nuevo hilo

Parámetros de pthread_create:

Tiene los siguientes parámetros:

hilo: Esto actúa como un puntero a un valor entero sin signo. Devuelve la identificación del hilo del hilo que se forma.

atributos: Este parámetro actúa como un puntero a una estructura. Se utiliza para definir atributos de un hilo que pueden ser la política de programación y la dirección de la pila, etc.

start_routine: Este parámetro es un puntero a una subrutina implementada por el hilo.

argumento: Este parámetro es un puntero para anular con diferentes argumentos a la función predefinida al comienzo del argumento

Sintaxis:

>> int pthread_create
(pthread_t * hilo, const pthread_attributes_t * atributo, void * (* start_routine) (void *), void * argumento);

pthread_exit:

Se utiliza para terminar o finalizar un hilo

Parámetros de pthread_exit:

El método utilizado al final del método / proceso acepta un parámetro retval que es un indicador obligatorio de un número entero. Almacena el estado del hilo de modo que el hilo termine. Debe ser una variable global. Esto permitirá que el siguiente hilo en línea se una al hilo si está disponible.

Sintaxis:

>> void pthread_exit (void * retval);

pthread_join:

Esta es una función utilizada en el momento de esperar la terminación del hilo.

Parámetros para pthread_join:

Los parámetros utilizados aquí son:

thread_id: Es el ID del hilo que espera el hilo en línea.

thread_return: Es el parámetro que actúa como puntero a la ubicación particular donde hemos definido el estado de salida.

Sintaxis:

>> int pthread_join (pthread_t thread_identification, void ** thread_return);

pthread_self:

Este es un método utilizado para obtener la identificación del hilo actualmente en línea.

Sintaxis:

>> pthread_t pthread_self (vacío);

pthread_equal:

Este método se utiliza para comparar en caso de que dos subprocesos sean equivalentes o no. Si dos subprocesos son iguales, la función devolverá un valor distinto de cero en respuesta.

Sintaxis:

>> int pthread_equal (pthread_t thread1, pthread_t thread2);

pthread_cancel:

Este método se utiliza para enviar una solicitud de cancelación

Parámetro para pthread_cancel:

El parámetro utilizado es obligatorio para ser ingresado para cancelar la solicitud.

Sintaxis:

>> int pthread_cancel (pthread_t threadName);

pthread_detach:

Este es el método que se utiliza para separar un hilo. No necesita ningún hilo para unirse en la terminación. Todos los recursos que se ejecutan en el subproceso se liberan tan pronto como se separa el subproceso.

Parámetro de pthread_detachr:

Es el parámetro que acepta el parámetro obligatorio id de hilo. Es imprescindible estar desapegado.

Sintaxis:

>> int pthread_detach (pthread_t hilo);

Código de muestra:

Aquí hay un código de ejemplo para mostrar la implementación de la función descrita anteriormente. Usamos un compilador gcc para compilar estas funciones.

// Programa para mostrar las funciones del hilo
#incluir
#incluir
#incluir
// Llamar al hilo POSIX, imprescindible en sistemas UNIX / LINUX
pthread_t tid [2];
void * Función (void * arg)

unsigned long i = 0;
pthread_t id = pthread_self ();
if (pthread_equal (id, tid [0]))
// Condición para que los subprocesos sean iguales

printf ("\ n Se está procesando el primer hilo \ n");

demás

printf ("\ n Se está procesando el segundo hilo \ n");

// Subprocesos en proceso.
para (i = 0; i<(0x255);i++);
return NULL;

int main (vacío)

int i = 0;
en terror;
// Creando un nuevo hilo
mientras yo < 2)

error = pthread_create (& (tid [i]), NULL, & Function, NULL);
si (error != 0)
printf ("\ n No se ha podido crear el hilo: [% s]", strerror (error));
demás
printf ("\ n El hilo se ha creado correctamente \ n");
// Hilo creado con éxito
i ++;

dormir (5);
return 0;

El código está escrito en un editor de texto; puede usar cualquier editor según su elección. Luego guárdalo en tu ubicación favorita.

El archivo se guarda en el sistema informático y luego se accede. El archivo guardado por nosotros se llamó prueba.C. Para acceder a él, escriba el siguiente comando en la ventana de la terminal:

prueba $ sudo gcc.c -lpthread

A continuación, para ejecutar la salida, escriba el siguiente comando:

PS ./a.fuera

Rendimiento esperado:

El resultado que obtuvimos en respuesta al código anterior se muestra a continuación:

Conclusión:

El tutorial cubrió el proceso básico de creación de subprocesos y discutió todos los métodos comúnmente utilizados en su creación. El hilo es una instancia de un proceso. Luego, guiamos a los usuarios a través de los famosos parámetros utilizados por cada proceso junto con las sintaxis para que puedan utilizarlos en sus programas informáticos. Aquí también compartimos un código de ejemplo como muestra para comprender mejor la idea de crear un programa en C en POSIX. El compilador que usamos fue gcc en el sistema Linux. Los usuarios también pueden optar por cualquier otro compilador según sus preferencias.

Cómo cambiar los botones izquierdo y derecho del mouse en una PC con Windows 10
Es una norma que todos los dispositivos de mouse de computadora estén diseñados ergonómicamente para usuarios diestros. Pero hay dispositivos de mouse...
Emule los clics del mouse colocando el mouse con Clickless Mouse en Windows 10
El uso excesivo de un mouse o teclado en una postura incorrecta puede provocar muchos problemas de salud, como tensión, síndrome del túnel carpiano y ...
Agregue gestos del mouse a Windows 10 con estas herramientas gratuitas
En los últimos años, las computadoras y los sistemas operativos han evolucionado enormemente. Hubo un momento en que los usuarios tenían que usar coma...