Ben halka tamponlar kullanarak referans gördüm ve kilit ihtiyacını ortadan kaldırmak veya azaltmak için konum işaretçileri kontrollü erişim. Bekleme ihtiyacını ortadan kaldırmaz ve sadece bir halka arabelleğinin bir yazar ve bir okuyucuya sahip olması gerekir. Sizin durumunuzda en az iki tampon gerekir.
Anladığım gibi mekanizma:
- yazar açık bir yuva olana kadar bekler (son + 1! = geçerli)
- yazar giriş halka arabelleğe yazar.
yazar son giriş işaretçisini günceller.
okuyucu, halka arabelleğinde kullanılabilir bir giriş olana kadar bekler (son! = akım).
- okuyucu girişi işler.
- okuyucu geçerli işaretçiyi artırır.
Kullanılan bekleme süresine bağlı olarak, bu, boş bir kuyruktaki yeni öğeler için gecikme ekleyebilir veya bekleme döngüsünde çok fazla CPU döngüsü oluşturabilir. İşaretçiyi güncelleme sırası ve yazma erişiminin sıkı bir şekilde ayrılması bunun çalışması için kritik öneme sahiptir. Yazarın, okuyucuya erişmesi için işaretçiyi artırmadan önce yalnızca halka arabelleği girdisini yazmasına izin verilir.