{"title":"步长复杂度为多对数的无等待队列","authors":"Hossein Naderibeni, Eric Ruppert","doi":"10.1007/s00446-024-00471-7","DOIUrl":null,"url":null,"abstract":"<p>We present a novel linearizable wait-free queue implementation using single-word CAS instructions. Previous lock-free queue implementations from <span>CAS</span> all have amortized step complexity of <span>\\(\\Omega (p)\\)</span> per operation in worst-case executions, where <i>p</i> is the number of processes that access the queue. Our new wait-free queue takes <span>\\(O(\\log p)\\)</span> steps per enqueue and <span>\\(O(\\log ^2 p +\\log q)\\)</span> steps per dequeue, where <i>q</i> is the size of the queue. A bounded-space version of the implementation has <span>\\(O(\\log p \\log (p+q))\\)</span> amortized step complexity per operation.</p>","PeriodicalId":50569,"journal":{"name":"Distributed Computing","volume":"11 1","pages":""},"PeriodicalIF":1.3000,"publicationDate":"2024-08-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"A wait-free queue with polylogarithmic step complexity\",\"authors\":\"Hossein Naderibeni, Eric Ruppert\",\"doi\":\"10.1007/s00446-024-00471-7\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"<p>We present a novel linearizable wait-free queue implementation using single-word CAS instructions. Previous lock-free queue implementations from <span>CAS</span> all have amortized step complexity of <span>\\\\(\\\\Omega (p)\\\\)</span> per operation in worst-case executions, where <i>p</i> is the number of processes that access the queue. Our new wait-free queue takes <span>\\\\(O(\\\\log p)\\\\)</span> steps per enqueue and <span>\\\\(O(\\\\log ^2 p +\\\\log q)\\\\)</span> steps per dequeue, where <i>q</i> is the size of the queue. A bounded-space version of the implementation has <span>\\\\(O(\\\\log p \\\\log (p+q))\\\\)</span> amortized step complexity per operation.</p>\",\"PeriodicalId\":50569,\"journal\":{\"name\":\"Distributed Computing\",\"volume\":\"11 1\",\"pages\":\"\"},\"PeriodicalIF\":1.3000,\"publicationDate\":\"2024-08-17\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Distributed Computing\",\"FirstCategoryId\":\"94\",\"ListUrlMain\":\"https://doi.org/10.1007/s00446-024-00471-7\",\"RegionNum\":4,\"RegionCategory\":\"计算机科学\",\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"Q3\",\"JCRName\":\"COMPUTER SCIENCE, THEORY & METHODS\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Distributed Computing","FirstCategoryId":"94","ListUrlMain":"https://doi.org/10.1007/s00446-024-00471-7","RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q3","JCRName":"COMPUTER SCIENCE, THEORY & METHODS","Score":null,"Total":0}
引用次数: 0
摘要
我们提出了一种使用单字 CAS 指令实现的新型可线性化无等待队列。CAS 之前的无锁队列实现在最坏情况下的执行中,每次操作的摊销步骤复杂度都是\(\Omega (p)\),其中 p 是访问队列的进程数。我们的新免等待队列每次enqueue需要(O(\log p)\)步,每次dequeue需要(O(\log ^2 p +\log q)\)步,其中q是队列的大小。有界空间版本的实现每次操作的摊销步骤复杂度为(O(\log p \log (p+q))。
A wait-free queue with polylogarithmic step complexity
We present a novel linearizable wait-free queue implementation using single-word CAS instructions. Previous lock-free queue implementations from CAS all have amortized step complexity of \(\Omega (p)\) per operation in worst-case executions, where p is the number of processes that access the queue. Our new wait-free queue takes \(O(\log p)\) steps per enqueue and \(O(\log ^2 p +\log q)\) steps per dequeue, where q is the size of the queue. A bounded-space version of the implementation has \(O(\log p \log (p+q))\) amortized step complexity per operation.
期刊介绍:
The international journal Distributed Computing provides a forum for original and significant contributions to the theory, design, specification and implementation of distributed systems.
Topics covered by the journal include but are not limited to:
design and analysis of distributed algorithms;
multiprocessor and multi-core architectures and algorithms;
synchronization protocols and concurrent programming;
distributed operating systems and middleware;
fault-tolerance, reliability and availability;
architectures and protocols for communication networks and peer-to-peer systems;
security in distributed computing, cryptographic protocols;
mobile, sensor, and ad hoc networks;
internet applications;
concurrency theory;
specification, semantics, verification, and testing of distributed systems.
In general, only original papers will be considered. By virtue of submitting a manuscript to the journal, the authors attest that it has not been published or submitted simultaneously for publication elsewhere. However, papers previously presented in conference proceedings may be submitted in enhanced form. If a paper has appeared previously, in any form, the authors must clearly indicate this and provide an account of the differences between the previously appeared form and the submission.