Programación en C

Posix Mutex con programación en C

Posix Mutex con programación en C
El artículo de hoy se centrará en el uso de Posix Mutex con programación C en Linux Mint 20. Sin embargo, antes de pasar a nuestro ejemplo principal, primero nos gustaría aclarar algunas terminologías, para que pueda comprender fácilmente el escenario de ejemplo que compartiremos con usted. En los sistemas operativos, el concepto de subprocesamiento se usa ampliamente. Los subprocesos son básicamente subprocesos que se delegan con diferentes tareas. Puede considerar el siguiente ejemplo para comprender el funcionamiento de los subprocesos.

Suponga que hay un subproceso principal A, cuyo trabajo es calcular la suma de las variables w e y donde w = x + 1 e y = z + 2. Los valores de las variables x y z deben ser obtenidos por el usuario. En este escenario, podemos crear dos hilos, B y C. El trabajo del hilo B será tomar el valor de la variable x del usuario, incrementarlo en 1 y guardarlo en la variable w. El trabajo del hilo C será tomar el valor de la variable z del usuario, incrementarlo en 2 y luego guardarlo en la variable y. Finalmente, ambos subprocesos entregarán estos resultados al subproceso principal A, que luego calculará su suma y mostrará el resultado final.

Si no hubiéramos creado ningún subproceso en este escenario, entonces todas las tareas habrían sido realizadas por el subproceso principal A en un tiempo mucho mayor. De esta manera, los subprocesos pueden realizar sus cálculos de manera eficiente sin retrasos innecesarios. Sin embargo, existe una preocupación muy importante con el uso de subprocesos, que se conoce como la "condición de carrera". Es una situación en la que dos hilos intentan acceder y modificar los mismos datos, dejándolos inconsistentes. Como programador, nuestro objetivo debe ser evitar las condiciones de carrera de la manera más elegante.

La solución más comúnmente empleada para evitar las condiciones de carrera es el uso de Mutex. Mutex significa exclusión mutua, y básicamente nos proporciona un mecanismo de bloqueo que evita el acceso y la modificación de los datos críticos por más de un usuario a la vez. De esta forma, se garantiza la coherencia de los datos. Posix es básicamente una librería que nos presenta diferentes funciones integradas que facilitan mucho la implementación de hilos y Mutex. Con el siguiente ejemplo, intentaremos aprender el uso de Posix Mutex con programación C en Linux Mint 20.

Ejemplo de uso de Posix Mutex con programación en C en Linux Mint 20

Realizaremos los siguientes tres pasos para guiarlo a través del uso de Posix Mutex con programación C en Linux Mint 20.

Paso # 1: Creación de un programa que demuestre el uso de Posix Mutex con programación en C en Linux Mint 20

En primer lugar, crearemos un .cpp en nuestro sistema Linux Mint 20. Simplemente iremos a nuestra carpeta de Inicio, crearemos un documento vacío y lo llamaremos Mutex.cpp. Una vez nuestro .Se crea el archivo cpp, lo abriremos con el editor de texto. Después de eso, escribiremos el código que se muestra en las imágenes a continuación en nuestro .archivo cpp:

El código que se muestra en las dos imágenes de arriba creó dos hilos diferentes. El primer hilo corresponde al trabajo n. ° 1, mientras que el segundo hilo corresponde al trabajo n. ° 2. Luego, hemos creado una función de muestra llamada "Función Mutex". En esta función, primero estamos bloqueando la variable de bloqueo Mutex, y solo se desbloqueará una vez que el hilo # 1 finalice el Trabajo # 1. De manera similar, la variable de bloqueo Mutex volverá a ser bloqueada por el hilo # 2 hasta que finalice el Trabajo # 2. Esta "función Mutex" es llamada por la función "principal".

Paso # 2: compilar el programa C en Linux Mint 20

Después de guardar el .cpp, ahora lo compilaremos a través del terminal Linux Mint 20 con el siguiente comando:

$ gcc -o Mutex Mutex.cpp -pthread

Aquí, "Mutex", después del indicador "-o", se refiere al nombre del archivo objeto que se creará, mientras que "Mutex.cpp ”es el nombre del original .archivo cpp. El indicador "-pthread" es necesario para compilar este programa porque este programa se escribe mientras se usa la biblioteca "pthread". Si omite esta bandera, su programa no se compilará y generará algunos errores. La exitosa compilación de nuestro .El archivo cpp no ​​producirá ningún mensaje en el terminal, como se muestra en la siguiente imagen:

Paso # 3: Ejecutar el programa C en Linux Mint 20

Una vez creado el archivo objeto llamado “Mutex”, podemos ejecutarlo usando el siguiente comando:

PS ./ Mutex

En la salida de nuestro Mutex.cpp, notará que el primer trabajo 1 ha comenzado, lo que significa que el hilo # 1 ha adquirido el bloqueo Mutex. Después de eso, el trabajo 1 termina después de un tiempo. Luego, comienza el Trabajo 2, lo que significa que el hilo # 2 ha adquirido el bloqueo Mutex. Solo se desbloqueará una vez que finalice el trabajo 2.

Conclusión

Este artículo proporcionó una explicación detallada del uso de Posix Mutex con programación C en Linux Mint 20. El Mutex se puede usar de manera muy efectiva para evitar las condiciones de carrera durante la programación simplemente incluyendo la biblioteca Posix o pthread en nuestro código C. Esto no solo garantizará la coherencia de los datos, sino que también hará que el procesamiento sea mucho más eficiente.

Lo mejor de usar la biblioteca Posix en Linux es que ni siquiera necesitamos instalar ningún software, paquete o compilador especializado. El código C simplemente se puede escribir en cualquier editor de texto predeterminado en Linux y se puede compilar y ejecutar con los compiladores gcc o g ++ predeterminados. Esto demuestra ser una capa adicional de facilidad y conveniencia en el uso de Posix Mutex con programación C en Linux Mint 20.

Los 5 mejores productos ergonómicos de mouse de computadora para Linux
¿El uso prolongado de la computadora causa dolor en la muñeca o los dedos?? ¿Sufre de rigidez en las articulaciones y constantemente tiene que dar la ...
Cómo cambiar la configuración del mouse y el panel táctil con Xinput en Linux
La mayoría de las distribuciones de Linux se envían con la biblioteca "libinput" de forma predeterminada para manejar eventos de entrada en un sistema...
Vuelva a asignar los botones del mouse de manera diferente para diferentes programas con X-Mouse Button Control
Tal vez necesite una herramienta que pueda hacer que el control de su mouse cambie con cada aplicación que use. Si este es el caso, puede probar una a...