Race Condition
Program sonucunun eşzamanlı işlemlerin kontrolsüz göreli zamanlamasına bağlı hale gelmesi ve farklı interleaving'lerde farklı davranış üretmesi.
Zamanlamaya Bağımlı Doğruluk
Race condition, aynı sistem durumuna birden fazla yürütme bağlamının eriştiği ve doğruluğun hangi işlemin önce gerçekleştiğine bağlı olduğu durumda ortaya çıkar.
Sorun yalnız iki thread'in aynı anda çalışması değildir; geçerli olmayan bir interleaving'in mümkün olmasıdır.
Data Race ile Aynı Değil
Bazı dil/bellek modellerinde data race daha dar, biçimsel bir tanıma sahiptir. Race condition ise kilitli/atomik erişimler kullanılsa bile daha üst seviye check-then-act mantığında oluşabilir.
Test Zorluğu
Hata yalnız belirli zamanlama penceresinde ortaya çıktığı için normal testlerde uzun süre görünmeyebilir. Log eklemek veya debugger kullanmak zamanlamayı değiştirerek hatayı gizleyebilir.
Çözüm; paylaşılan durumu azaltmak, atomicity sınırını doğru kurmak ve geçerli durum geçişlerini açık tasarlamaktır.
İlişkili Kavramlar
- Deadlock
- Compare-and-Swap
- Memory Barrier
- Thread Safety