يستخدم لغز Sudoku شبكة 9 × 9 التي يجب أن تحتوي كل عمود وصف ، وكذلك كل من الأرقام الفرعية 3 × 3 ، على جميع الأرقام 1 · · 9.
يتكون هذا المشروع من تصميم تطبيق متعدد الترابط يحدد ما إذا كان حل لغز Sudoku صالحًا أم لا.
الخيط هو وحدة أساسية لاستخدام وحدة المعالجة المركزية. ويضم معرف مؤشر ترابط ، وعداد البرنامج ، ومجموعة التسجيل ، ومكدس. وهي تشارك مع مؤشرات الترابط الأخرى التي تنتمي إلى نفس العملية قسم الكود ، وقسم البيانات ، وموارد نظام التشغيل الأخرى ، مثل الملفات المفتوحة والإشارات.
sudoku_validator_naive.c
هو تطبيق ساذج لمقحة Sudoku. هنا نتحقق من جميع الشروط الثلاثة لـ Sudoku صالحة بشكل تسلسلي.
sudoku_validator.c
ينشئ 3 مؤشرات ترابط للتحقق من كل حالة باراليلي. يستفيد من مكتبة PTHREADS وهو معيار POSIX يحدد واجهة برمجة التطبيقات لإنشاء مؤشرات الترابط ومزامنة تدعمها UNIX والعديد من أنظمة التشغيل الأخرى.
لرؤية النتائج بشكل واضح ، نستخدم وظيفة sleep()
المحددة في unistd.h
. بعد التحقق من كل حالة ، نقوم بإيقاف تنفيذ البرنامج لمدة 5 ثوان.
نظرًا لأن البرنامج يعمل بشكل متسلسل وتنام كل وظيفة لمدة 5 ثوانٍ ، فإن وقت التنفيذ حوالي 15 ثانية.
نظرًا لأن الظروف تعمل بالتوازي مع بعضها البعض وتنام كل وظيفة لمدة 5 ثوان ، فإن وقت التنفيذ حوالي 5 ثوان فقط.