मेरी आगामी समवर्ती सिस्टम परीक्षा के लिए preperation में, मैं पाठ्य पुस्तक "बहु प्रोग्रामिंग की कला" से कुछ सवाल पूरा करने के लिए कोशिश कर रहा हूँ। एक सवाल मुझे गुस्सा दिलाना है:वाली बहु-प्रोग्रामिंग: ताला मुक्त ढेर
व्यायाम 129: यह मतलब है दोनों धक्का और हमारे LockFreeStack वस्तु में पॉप के लिए एक ही साझा backoff वस्तु उपयोग कैसे करें? EliminationBackOffStack में अंतरिक्ष और समय में हम बैकऑफ कैसे बना सकते हैं?
यह सवाल कीड़े मुझे क्योंकि पहली बात यह है कि मेरे दिमाग में आता है कि यह मतलब नहीं है करता है क्योंकि सभी एक backoff वस्तु एक प्रक्रिया इंतजार करना है, तो क्यों इसे साझा नहीं है? प्रश्न का दूसरा भाग मुझे पूरी तरह से बढ़ाता है और किसी भी मदद का स्वागत है।
LockFreeStack के लिए कोड:
public class LockFreeStack<T> {
AtomicReference<Node> top = new AtomicReference<Node>(null);
static final int MIN_DELAY = ...;
static final int MAX_DELAY = ...;
Backoff backoff = new Backoff(MIN_DELAY, MAX_DELAY);
protected boolean tryPush(Node node) {
Node oldTop = top.get();
node.next = oldTop;
return(top.compareAndSet(oldTop, node));
}
public void push(T value) {
Node node = new Node(value);
while (true) {
if (tryPush(node)) {
return;
} else {
backoff.backoff();
}
}
}
के लिए छोटा किया जा सकता है क्या Backoff.backoff() विधि वास्तव में क्या करता है? "एलिमिनेशनबैकऑफस्टैक" का क्या उल्लेख है?कृपया उन क्षेत्रों पर कुछ और जानकारी प्रदान करें। –
क्या आप {{बैकऑफ}} कक्षा के लिए कुछ जानकारी - या यहां तक कि कोड भी प्रदान कर सकते हैं? क्या यह किसी प्रकार का घातीय बैकऑफ कर रहा है? –
http://books.google.com/books?id=pFSwuqtJgxYC&lpg=PA253&ots=10QEvrNBh1&dq=eliminationbackoffstack&pg=PA253#v=onepage&q=eliminationbackoffstack&f=false –