Proje Detayları
Eşzamanlı programlama (concurrent programming) ilkelerini, çoklu iş parçacığı (multi-threading) yönetimini ve paylaşılan kaynakların güvenli kullanımını kavramak amacıyla geliştirilmiş gelişmiş bir sistem programlama projesidir. Proje, belirli kurallar çerçevesinde hayatta kalmaya (düşünmeye, yemek yemeye ve uyumaya) çalışan filozofların, sınırlı sayıdaki kaynağı (çatalları) asenkron olarak paylaşmasını konu alır.
Simülasyonda her bir filozof bağımsız birer POSIX Thread (pthread) olarak kurgulanmış, paylaşılan kaynaklar olan çatallar ise Mutex (Mutual Exclusion) kilit mekanizmaları ile koruma altına alınmıştır. Projenin temel mühendislik zorluğu; mikro saniye düzeyinde zaman yönetimi sağlayarak, thread'lerin birbirini sonsuza kadar engellediği Deadlock (Ölümcül Kilitlenme) durumlarını ve aynı veriye asenkron erişimden kaynaklanan Data Race (Veri Yarışı) hatalarını tamamen önlemektir. Süreç boyunca, bir filozofun öldüğü anı milisaniyelik gecikmeler olmadan anlık yakalayan izleyici (monitoring) thread mimarisi kurulmuştur. Proje, bellek sızıntıları ve iş parçacığı güvenliği açısından ThreadSanitizer (-fsanitize=thread) ve Valgrind araçları ile titizlikle test edilmiştir.