kullanmaktır. ABA sorunu çöp toplama için ortogonaldir. Örneğin, uygulamalar bağlantılı bir listeden nesneleri ücretsiz bir listeye taşıyabilir ve daha sonra bunları hemen geri alabilir. Bu nedenle, nesne yeniden kullanılmadan önce asla serbest bırakılmaz. Bununla birlikte, ABA sorunu şu şekilde olabilir:
Thread1: prevHead = head;
Thread2: prevHead = head; newHead = getFromFreeList(); if (cas (& head, prevHead, newHead)) addToFreeList (prevHead);
Thread3: prevHead = head; newHead = getFromFreeList(); // başarılı // thread2 cas tarafından 'serbest' aynı nesneyi (& kafa, prevHead, newHead) alın ve thread2
Thread1 tarafından kaldırıldı şeyi geri koymak: newHead = getFromFreeList(); if (cas (& head, prevHead, newHead)) addToFreeList (prevHead); // CAS, // 'den beri olmamalı, ancak baştaki' Thread3 'tarafından yapılan bir değişiklik.
Lütfen herkesin izleyebilmesi için yazıları buradan kitaptan verin. Ve bu URL'yi referans olarak verebilirsiniz. – Trying
bu yardımcı olabilir http://cs.brown.edu/courses/cs176/ – arunmoezhi
@Tmas Krieger Bu kibar cevap değil - "kitap okumak" – gstackoverflow