The APRAM: incorporating asynchrony into the PRAM model
SPAA '89 Proceedings of the first annual ACM symposium on Parallel algorithms and architectures
Linearizability: a correctness condition for concurrent objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
Locking without blocking: making lock based concurrent data structure algorithms nonblocking
PODS '92 Proceedings of the eleventh ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems
Transactional memory: architectural support for lock-free data structures
ISCA '93 Proceedings of the 20th annual international symposium on computer architecture
A method for implementing lock-free shared-data structures
SPAA '93 Proceedings of the fifth annual ACM symposium on Parallel algorithms and architectures
Disjoint-access-parallel implementations of strong shared memory primitives
PODC '94 Proceedings of the thirteenth annual ACM symposium on Principles of distributed computing
Efficient fault-tolerant algorithms for distributed resource allocation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Universal constructions for multi-object operations
Proceedings of the fourteenth annual ACM symposium on Principles of distributed computing
Disentangling multi-object operations (extended abstract)
PODC '97 Proceedings of the sixteenth annual ACM symposium on Principles of distributed computing
System level concurrency control for distributed database systems
ACM Transactions on Database Systems (TODS)
Improved implementations of binary universal operations
Journal of the ACM (JACM)
Transactional lock-free execution of lock-based programs
Proceedings of the 10th international conference on Architectural support for programming languages and operating systems
A Practical Multi-word Compare-and-Swap Operation
DISC '02 Proceedings of the 16th International Conference on Distributed Computing
Software transactional memory for dynamic-sized data structures
Proceedings of the twenty-second annual symposium on Principles of distributed computing
Language support for lightweight transactions
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Distributed Computing: Fundamentals, Simulations and Advanced Topics
Distributed Computing: Fundamentals, Simulations and Advanced Topics
Advanced contention management for dynamic software transactional memory
Proceedings of the twenty-fourth annual ACM symposium on Principles of distributed computing
Efficient multi-word locking using randomization
Proceedings of the twenty-fourth annual ACM symposium on Principles of distributed computing
TxLinux and MetaTM: transactional memory and the operating system
Communications of the ACM - Enterprise information integration: and other tools for merging data
Bounds on Contention Management Algorithms
ISAAC '09 Proceedings of the 20th International Symposium on Algorithms and Computation
DISC'06 Proceedings of the 20th international conference on Distributed Computing
Obstruction-Free step complexity: lock-free DCAS as an example
DISC'05 Proceedings of the 19th international conference on Distributed Computing
Pragmatic primitives for non-blocking data structures
Proceedings of the 2013 ACM symposium on Principles of distributed computing
Hi-index | 5.23 |
The design of concurrent data structures is greatly facilitated by the availability of synchronization operations that atomically modify k arbitrary items, such as k-read-modify-write (krmw). Aiming to increase concurrency in order to exploit the parallelism offered by today's multi-core and multi-processing architectures, we propose a highly concurrent software implementation of krmw, with only constant space overhead. Our algorithm ensures that two operations delay each other only if they are within distance O(k) in the conflict graph, induced by the operations' data items. The algorithm uses double compare-and-swap (dcas). When dcas is not supported by the architecture, the algorithm of Attiya and Dagan (2001) [3] can be used to replace dcas with (unary) cas, with only a slight increase in the interference among operations.