Um quebra -cabeça sudoku usa uma grade 9 × 9 na qual cada coluna e linha, bem como cada um dos nove subgrades 3 × 3, devem conter todos os dígitos 1 · · 9.
Este projeto consiste em projetar um aplicativo multithread que determine se a solução para um quebra -cabeça de Sudoku é válida ou não.
Um thread é uma unidade básica de utilização da CPU. Ele compreende um ID do thread, um contador de programas, um conjunto de registros e uma pilha. Ele compartilha com outros threads pertencentes ao mesmo processo, sua seção de código, seção de dados e outros recursos do sistema operacional, como arquivos e sinais abertos.
sudoku_validator_naive.c
é uma implementação ingênua do validador sudoku. Aqui, verificamos todas as três condições para sudoku válido em série.
sudoku_validator.c
cria 3 threads para verificar cada condição parallelly. Ele utiliza a biblioteca Pthreads, que é um padrão POSIX que define uma API para criação e sincronização de threads suportada pelo UNIX e vários outros sistemas operacionais.
Para ver os resultados visivelmente, usamos a função sleep()
definida em unistd.h
. Depois de verificar cada condição, pausamos a execução do programa por 5 segundos.
Como o programa está em execução em série e cada função dorme por 5 segundos, o tempo de execução é de cerca de 15 segundos.
Como as condições estão funcionando paralelas e cada função dorme por 5 segundos, o tempo de execução é de cerca de 5 segundos.