Un puzzle Sudoku utilise une grille 9 × 9 dans laquelle chaque colonne et ligne, ainsi que chacun des neuf sous-grumes 3 × 3, doivent contenir tous les chiffres 1 · · 9.
Ce projet consiste à concevoir une application multithread qui détermine si la solution à un puzzle Sudoku est valide ou non.
Un thread est une unité de base d'utilisation du processeur. Il comprend un ID de thread, un compteur de programme, un ensemble de registres et une pile. Il partage avec d'autres threads appartenant au même processus que sa section de code, sa section de données et d'autres ressources du système d'exploitation, telles que les fichiers ouverts et les signaux.
sudoku_validator_naive.c
est une implémentation naïve du validateur sudoku. Ici, nous vérifions les 3 conditions de Sudoku valides en série.
sudoku_validator.c
crée 3 threads pour vérifier chaque condition paralelly. Il utilise la bibliothèque Pthreads qui est une norme POSIX définissant une API pour la création et la synchronisation de threads prises en charge par UNIX et plusieurs autres systèmes d'exploitation.
Pour voir les résultats visiblement, nous utilisons la fonction sleep()
définie dans unistd.h
. Après avoir vérifié chaque condition, nous interrompons l'exécution du programme pendant 5 secondes.
Étant donné que le programme s'exécute en série et que chaque fonction dort 5 secondes, le temps d'exécution est d'environ 15 secondes.
Étant donné que les conditions sont parallèles les unes aux autres et que chaque fonction dort 5 secondes, le temps d'exécution est d'environ 5 secondes seulement.