스도쿠 퍼즐은 9 × 9 그리드를 사용하여 각 열과 행과 9 개의 3 × 3 서브 그리드 각각에 모든 숫자 1 · · · 9를 포함해야합니다.
이 프로젝트는 스도쿠 퍼즐에 대한 솔루션이 유효한지 여부를 결정하는 멀티 스레드 애플리케이션을 설계하는 것으로 구성됩니다.
스레드는 CPU 사용의 기본 단위입니다. 스레드 ID, 프로그램 카운터, 레지스터 세트 및 스택으로 구성됩니다. 코드 섹션, 데이터 섹션 및 열린 파일 및 신호와 같은 다른 운영 시스템 리소스와 동일한 프로세스에 속하는 다른 스레드와 공유합니다.
sudoku_validator_naive.c
Sudoku Validator의 순진한 구현입니다. 여기서 우리는 유효한 스도쿠의 3 가지 조건 모두 일련의 조건을 확인합니다.
sudoku_validator.c
각 조건을 평행을 확인하기 위해 3 개의 스레드를 만듭니다. UNIX 및 기타 여러 운영 체제가 지원하는 스레드 생성 및 동기화를위한 API를 정의하는 PSTHREDS 표준 인 PTHREADS 라이브러리를 사용합니다.
결과를 눈에 띄게보기 위해, 우리는 unistd.h
에 정의 된 sleep()
함수를 사용합니다. 각 조건을 확인한 후 5 초 동안 프로그램 실행을 일시 중지합니다.
프로그램이 연속적으로 실행되고 각 기능은 5 초 동안 자고 있으므로 실행 시간은 약 15 초입니다.
조건이 서로 평행하게 실행되고 각 기능은 5 초 동안 잠을 자므로 실행 시간은 약 5 초입니다.