Abstract
A snapshot is an important object in distributed computing whose implementation in asynchronous systems has been studied extensively. It consists of a collection of m >1 components, each storing a value, and supports two atomic operations: an UPDATE of a specified component's value and a SCAN of all components to determine their values at some point in time.In this paper, we investigate implementations of a multiwriter snapshot object in a synchronous shared memory model. In this setting, we show that a snapshot object can be efficiently implemented and prove a tight tradeoff between the complexity of the SCAN and the UPDATE operations. First, we describe a wait-free implementation that performs UPDATE in O(1) time and SCAN in O(m) time, using only slightly more than twice the amount of space needed to simply store the m values. We also describe a variant that performs UPDATE in O(1) time and SCAN in O(n) time.Second, we describe a wait-free implementation that performs UPDATE in O(log m) time and SCAN in O(1) time, and a variant that performs UPDATE in O(log n) time and SCAN in O(1) time.Third, we show how to combine these implementations to realize two implementations that perform UPDATE in Θ(log(m/c)) time and SCAN in Θ(c) time, for 1≤c≤m, or perform UPDATE in Θ(log(n/c)) time and SCAN in Θ(c) time, for 1≤c≤n. This implies that Time[UPDATE] ∈O(log(minm,n/Time[SCAN])). We also prove that Time[UPDATE] ∈ Ω(log(minm,n/Time[SCAN]) ), which matches our upper bound.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.