p2pstm: A Peer-to-Peer Software Transactional Memory
Peer-to-Peer network topologies are such that there is no centralized server in a distributed system but rather each peer is part server and part client. This idea was originally popularized with peer-to-peer file sharing. If one were to distribute computation on a peer-to-peer network topology, consistency of shared data among peers is a problem. Software Transactional Memory (STM) is a lock free mechanism of assuring consistency of memory among threads of execution that has favorable performance over locked methods when the number of threads is large. This paper presents a method to use STM methods with a peer-to-peer network architecture that doesn't use locks. This is accomplished by using peer-to-peer search using two keywords: one for the variable name and the other for the most recent version of the variable. The technique of using Hilbert Space Filling Curves to map from the keyword space to the identifier space without flooding from Squid  is used. Deadlocks are prevented by executing reads and writes with a defined partial order that is transparent to the developer. As an example of using the methods presented, a blocking queue is built from the primitives provided.