Alice ve Bob'un ikisinin de ürün listelerini düzenlediği bir e-ticaret sitesini düşünün. Alice açıklamaları geliştirirken, Bob fiyatları da güncelliyor. Acme Wonder Widget'ı aynı anda düzenlemeye başlarlar. Bob ilk önce biter ve ürünü yeni fiyattan kurtarır. Alice'in açıklamasını güncellemesi biraz daha uzun sürüyor ve bitirdiğinde ürünü yeni açıklamasıyla birlikte kaydediyor. Maalesef, aynı zamanda, fiyatı amaçlanmayan eski fiyatın üzerine yazıyor.
Deneyimlerime göre, bu sorunlar web uygulamalarında oldukça yaygın. Bazı yazılımlar (örneğin, wiki yazılımı) buna karşı koruma sağlar - genellikle ikinci kaydetme "düzenleme yapılırken sayfa güncellendi" ile başarısız olur. Ancak çoğu web sitesinde bu koruma yoktur.
Denetleyici yöntemlerinin kendi başlarına iplik güvenli olduğuna dikkat etmek önemlidir. Genellikle, eğer Alice ve Bob aynı anda tasarruf etmeye çalışırlarsa, yolsuzluğa yol açmayacakları anlamında onları güvenli kılan veritabanı işlemlerini kullanırlar. Yarış durumu, Alice veya Bob’un tarayıcılarında eski verilerden kaynaklanıyor.
Bu tür yarış koşullarını nasıl önleyebiliriz? Özellikle bilmek istiyorum:
- Hangi teknikler kullanılabilir? örneğin son değişimin zamanının izlenmesi. Her birinin avantajları ve dezavantajları nelerdir.
- Yardımcı bir kullanıcı deneyimi nedir?
- Bu koruma hangi çerçevelerde inşa edilmiştir?