ปริศนา Sudoku ใช้กริด 9 × 9 ซึ่งแต่ละคอลัมน์และแถวรวมถึงแต่ละ 3 3 × 3 subgrids จะต้องมีตัวเลขทั้งหมด 1 ··· 9
โครงการนี้ประกอบด้วยการออกแบบแอปพลิเคชันแบบมัลติเธรดที่กำหนดว่าการแก้ปัญหาของปริศนา Sudoku นั้นถูกต้องหรือไม่
เธรดเป็นหน่วยพื้นฐานของการใช้ CPU มันประกอบด้วย ID เธรด, ตัวนับโปรแกรม, ชุดการลงทะเบียนและสแต็ก มันแบ่งปันกับเธรดอื่น ๆ ที่อยู่ในกระบวนการเดียวกันส่วนรหัสส่วนข้อมูลและทรัพยากรระบบปฏิบัติการอื่น ๆ เช่นไฟล์เปิดและสัญญาณ
sudoku_validator_naive.c
เป็นการใช้งานที่ไร้เดียงสาของตัวตรวจสอบ Sudoku ที่นี่เราตรวจสอบทั้ง 3 เงื่อนไขสำหรับ Sudoku ที่ถูกต้อง
sudoku_validator.c
สร้าง 3 เธรดสำหรับการตรวจสอบแต่ละเงื่อนไขแบบขนาน มันใช้ประโยชน์จากไลบรารี pthreads ซึ่งเป็นมาตรฐาน POSIX ที่กำหนด API สำหรับการสร้างเธรดและการซิงโครไนซ์ที่สนับสนุนโดย UNIX และระบบปฏิบัติการอื่น ๆ อีกมากมาย
เพื่อดูผลลัพธ์อย่างเห็นได้ชัดเราใช้ฟังก์ชั่น sleep()
ที่กำหนดไว้ใน unistd.h
หลังจากตรวจสอบแต่ละเงื่อนไขเราหยุดการดำเนินการของโปรแกรมเป็นเวลา 5 วินาที
เนื่องจากโปรแกรมทำงานแบบอนุกรมและแต่ละฟังก์ชั่นจะนอนเป็นเวลา 5 วินาทีเวลาดำเนินการประมาณ 15 วินาที
เนื่องจากเงื่อนไขกำลังทำงานขนานกันและแต่ละฟังก์ชั่นจะนอนเป็นเวลา 5 วินาทีเวลาดำเนินการประมาณ 5 วินาทีเท่านั้น