All Projects → bhhbazinga → LockFreeSkipList

bhhbazinga / LockFreeSkipList

Licence: other
A set implementation based on lockfree skiplist.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to LockFreeSkipList

Taskchain
TaskChain Control Flow framework. Helps facilitate running tasks on an application's "Main Thread" (such as a game), and tasks off the main (async).
Stars: ✭ 143 (+921.43%)
Mutual labels:  concurrent-programming
Actors.jl
Concurrent computing in Julia based on the Actor Model
Stars: ✭ 95 (+578.57%)
Mutual labels:  concurrent-programming
Lazy
Light-weight header-only library for parallel function calls and continuations in C++ based on Eric Niebler's talk at CppCon 2019.
Stars: ✭ 93 (+564.29%)
Mutual labels:  concurrent-programming
Newbe.claptrap
This is a frameworks with reactive, event sourcing and Actor pattern as basic theories. On top of this, developers can create "distributed", "scale out", and "easy to test" application more simply. Claptrap and it`s Minions is on the way.
Stars: ✭ 163 (+1064.29%)
Mutual labels:  concurrent-programming
jet
Jet is a simple OOP, dynamically typed, functional language that runs on the Erlang virtual machine (BEAM). Jet's syntax is Ruby-like syntax.
Stars: ✭ 22 (+57.14%)
Mutual labels:  concurrent-programming
py-skiplist
Pure python implementation of a skiplist data structure
Stars: ✭ 31 (+121.43%)
Mutual labels:  skiplist
Tdp
The Darkest Pipeline - Multithreaded pipelines for modern C++
Stars: ✭ 67 (+378.57%)
Mutual labels:  concurrent-programming
Pomegranate
🌳 A tiny skiplist based log-structured merge-tree written in Rust.
Stars: ✭ 20 (+42.86%)
Mutual labels:  skiplist
go-left-right
A faster RWLock primitive in Go, 2-3 times faster than RWMutex. A Go implementation of concurrency control algorithm in paper <Left-Right - A Concurrency Control Technique with Wait-Free Population Oblivious Reads>
Stars: ✭ 42 (+200%)
Mutual labels:  concurrent-programming
Linux-Kernel-Driver-Programming
Implementation of PCI drivers, kprobe, sysfs, devfs, sensor driver, miscdevices, synchronization
Stars: ✭ 43 (+207.14%)
Mutual labels:  concurrent-programming
Sobjectizer
An implementation of Actor, Publish-Subscribe, and CSP models in one rather small C++ framework. With performance, quality, and stability proved by years in the production.
Stars: ✭ 172 (+1128.57%)
Mutual labels:  concurrent-programming
java-concurrent
OpenTracing-aware helpers related to java.util.concurrent
Stars: ✭ 36 (+157.14%)
Mutual labels:  concurrent-programming
skiplist-survey
A comparison of skip lists written in Go
Stars: ✭ 47 (+235.71%)
Mutual labels:  skiplist
Tascalate Concurrent
Implementation of blocking (IO-Bound) cancellable java.util.concurrent.CompletionStage and related extensions to java.util.concurrent.ExecutorService-s
Stars: ✭ 144 (+928.57%)
Mutual labels:  concurrent-programming
practice
Java并发编程与高并发解决方案:http://coding.imooc.com/class/195.html Java开发企业级权限管理系统:http://coding.imooc.com/class/149.html
Stars: ✭ 39 (+178.57%)
Mutual labels:  concurrent-programming
Chymyst Core
Declarative concurrency in Scala - The implementation of the chemical machine
Stars: ✭ 142 (+914.29%)
Mutual labels:  concurrent-programming
futil
minimal utilities for Scala Futures
Stars: ✭ 22 (+57.14%)
Mutual labels:  concurrent-programming
java-multithread
Códigos feitos para o curso de Multithreading com Java, no canal RinaldoDev do YouTube.
Stars: ✭ 24 (+71.43%)
Mutual labels:  concurrent-programming
JavaBase
📝 Java Base Learning
Stars: ✭ 13 (-7.14%)
Mutual labels:  concurrent-programming
dcard-spider
A spider on Dcard. Strong and speedy.
Stars: ✭ 91 (+550%)
Mutual labels:  concurrent-programming

LockFreeSkipList

A set implementation based on lockfree skiplist.

Feature

  • The complexity of all operations included Add, Remove, Contains are log(n).
  • Thread-safe and Lock-free.
  • Support Multi-producer and Multi-consumer.

Benchmark

go test bench=. -args -n=1000000

n represents the amount of data.

goos: darwin
goarch: amd64
pkg: LockFreeSkipList
BenchmarkRandomAdd-8                                   1        2025239990 ns/op
BenchmarkRandomRemove-8                                1        2042296246 ns/op
BenchmarkRandomAddAndRemoveAndContains-8               1        1308625407 ns/op
PASS
ok      LockFreeSkipList        7.319s

The above data was tested on my 2013 macbook-pro with Intel Core i7 4 cores 2.3 GHz.
See benchmark.

API

func NewLockFreeSkipList(comp func(value1 interface{}, value2 interface{}) bool)(sl *LockFreeSkipList)
func (sl *LockFreeSkipList) Add(value interface{})(success bool)
func (sl *LockFreeSkipList) Remove(value interface{})(success bool)
func (sl *LockFreeSkipList) Contains(value interface{})(contains bool)
func (sl *LockFreeSkipList) GetSize(value interface{})(size int32)

Reference

[1]A Pragmatic Implementation of Non-BlockingLinked-Lists. Timothy L.Harris
[2]M. Herlihy, Y. Lev, and N. Shavit. A lock-free concurrent skiplist with wait-free search. Unpublished Manuscript, Sun Microsystems Laborato- ries, Burlington, Massachusetts, 2007
[3]The Art of Multiprocessor Programming. Maurice Herlihy Nir Shavit

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].