Un rompecabezas de Sudoku utiliza una cuadrícula de 9 × 9 en la que cada columna y fila, así como cada una de las nueve subgridas 3 × 3, deben contener todos los dígitos 1 · · · 9.
Este proyecto consiste en diseñar una aplicación múltiple que determine si la solución a un rompecabezas sudoku es válida o no.
Un hilo es una unidad básica de utilización de la CPU. Comprende una ID de hilo, un contador de programa, un conjunto de registros y una pila. Se comparte con otros hilos que pertenecen al mismo proceso su sección de código, sección de datos y otros recursos del sistema operativo, como archivos abiertos y señales.
sudoku_validator_naive.c
es una implementación ingenua del validador de Sudoku. Aquí verificamos las 3 condiciones para su Sudoku válido en serie.
sudoku_validator.c
crea 3 hilos para verificar cada condición paralelista. Hace uso de la biblioteca PTHREADS, que es un estándar POSIX que define una API para la creación y sincronización de hilos compatibles con UNIX y varios otros sistemas operativos.
Para ver los resultados visiblemente, usamos la función sleep()
definida en unistd.h
. Después de verificar cada condición, detenemos la ejecución del programa durante 5 segundos.
Dado que el programa se ejecuta en serie y cada función duerme durante 5 segundos, el tiempo de ejecución es de aproximadamente 15 segundos.
Dado que las condiciones se ejecutan paralelas entre sí y cada función duerme durante 5 segundos, el tiempo de ejecución es solo de aproximadamente 5 segundos.