В головоломке Sudoku используется сетка 9 × 9, в которой каждый столбец и строка, а также каждая из девяти подгрид 3 × 3, должна содержать все цифры 1 · · 9.
Этот проект состоит из разработки многопоточного приложения, которое определяет, является ли решение загадкой судоку достоверным или нет.
Поток является основной единицей использования процессора. Он включает идентификатор потока, счетчик программы, набор регистров и стек. Он делится с другими потоками, принадлежащими к тому же процессу, который его раздел код, раздел данных и другие ресурсы операционной системы, такие как открытые файлы и сигналы.
sudoku_validator_naive.c
- это наивная реализация валидатора Sudoku. Здесь мы проверяем все 3 условия для действительных судоку последовательно.
sudoku_validator.c
Создает 3 потока для проверки каждого условия параллелли. Он использует библиотеку Pthreads, которая является стандартом POSIX, определяющим API для создания и синхронизации потока, поддерживаемой UNIX и несколькими другими операционными системами.
Чтобы увидеть результаты заметно, мы используем функцию sleep()
определенную в unistd.h
. После проверки каждого условия мы останавливаем выполнение программы в течение 5 секунд.
Поскольку программа работает последовательно, и каждая функция спит в течение 5 секунд, время выполнения составляет около 15 секунд.
Поскольку условия работают параллельно друг другу, и каждая функция спит в течение 5 секунд, время выполнения составляет только около 5 секунд.