Ein Sudoku -Puzzle verwendet ein 9 × 9 -Gitter, in dem jede Säule und jede Zeile sowie jede der neun 3 × 3 -Subgrids alle Ziffern 1 · · 9 enthalten müssen.
Dieses Projekt besteht darin, eine Multithread -Anwendung zu entwerfen, die feststellt, ob die Lösung für ein Sudoku -Puzzle gültig ist oder nicht.
Ein Faden ist eine grundlegende Einheit der CPU -Auslastung. Es umfasst eine Thread -ID, einen Programmzähler, einen Register -Set und einen Stapel. Es teilt mit anderen Threads, die zu demselben Prozess gehören, seinen Codeabschnitt, den Abschnitt Daten und andere Ressourcen für Betriebssysteme, wie z. B. offene Dateien und Signale.
sudoku_validator_naive.c
ist eine naive Implementierung des Sudoku -Validators. Hier überprüfen wir alle drei Bedingungen für gültige Sudoku seriell.
sudoku_validator.c
erstellt 3 Threads zum Überprüfen jeder Bedingung parallellell. Es wird die PThreads -Bibliothek verwendet, die ein POSIX -Standard ist, das eine API für die Erstellung und Synchronisation von Thread definiert, die von UNIX und mehreren anderen Betriebssystemen unterstützt wird.
Um die Ergebnisse sichtbar zu sehen, verwenden wir die in unistd.h
definierte sleep()
-Funktion. Nachdem wir jede Bedingung überprüft haben, pausieren wir die Ausführung des Programms 5 Sekunden lang.
Da das Programm seriell ausgeführt wird und jede Funktion 5 Sekunden lang schläft, beträgt die Ausführungszeit etwa 15 Sekunden.
Da die Bedingungen parallel zueinander laufen und jede Funktion 5 Sekunden lang schläft, beträgt die Ausführungszeit nur etwa 5 Sekunden.