Pinned Repositories
array-queue
Array queue is a bounded lock-based FIFO queue using an array. It uses 2 separate locks for head and tail.
backoff-lock
Backoff Lock uses an atomic value for critical section execution, and is suitable for memory-limited architectures.
clh-lock
CLH Queue Lock maintains a linked-list for threads waiting to enter critical section, and is suitable for cache-coherent architectures.
combining-tree
A Combining Tree is an N-ary tree of nodes, that follows software combining to reduce memory contention while updating a shared value.
dekker-algorithm
Dekker's algorithm is the first known correct solution to the mutual exclusion problem in concurrent programming.
elimination-backoff-stack
Elimination-backoff stack is an unbounded lock-free LIFO linked list, that eliminates concurrent pairs of pushes and pops with exchanges.
fifo-read-write-lock
FIFO Read-write Lock blocks any new readers once a writer requests, thus preventing writer lock-out due to continual stream of readers.
locked-queue
A Locked Queue in a concurrent FIFO queue that uses locks and conditions to block enqueue when queue is full, and dequeue when it is empty.
mcs-lock
MCS Queue Lock maintains a linked-list for threads waiting to enter critical section, and is suitable for cache-less NUMA architectures.
sleeping-barber-problem
The sleeping barber problem is a classic interprocess communication and synchronization problem between multiple operating system processes.
javaf's Repositories
javaf/backoff-lock
Backoff Lock uses an atomic value for critical section execution, and is suitable for memory-limited architectures.
javaf/array-queue
Array queue is a bounded lock-based FIFO queue using an array. It uses 2 separate locks for head and tail.
javaf/clh-lock
CLH Queue Lock maintains a linked-list for threads waiting to enter critical section, and is suitable for cache-coherent architectures.
javaf/combining-tree
A Combining Tree is an N-ary tree of nodes, that follows software combining to reduce memory contention while updating a shared value.
javaf/elimination-backoff-stack
Elimination-backoff stack is an unbounded lock-free LIFO linked list, that eliminates concurrent pairs of pushes and pops with exchanges.
javaf/fifo-read-write-lock
FIFO Read-write Lock blocks any new readers once a writer requests, thus preventing writer lock-out due to continual stream of readers.
javaf/locked-queue
A Locked Queue in a concurrent FIFO queue that uses locks and conditions to block enqueue when queue is full, and dequeue when it is empty.
javaf/mcs-lock
MCS Queue Lock maintains a linked-list for threads waiting to enter critical section, and is suitable for cache-less NUMA architectures.
javaf/bitonic-network
Bitonic network is a balanced counting network that allows processes to decompose operations, like counting, and reduce memory contention.
javaf/extra-bit
The bit is a basic unit of information in information theory, computing.
javaf/simple-read-write-lock
Simple Read-write Lock uses a counter and a boolean flag to keep track of multiple readers and a writer, but does not prioritize writers.
javaf/array-lock
Array Queue Lock maintains a fixed array for critical section execution, and is suitable for cache-less static memory architectures.
javaf/array-stack
Array stack is a bounded lock-based stack using an array. It uses a common lock for both push and pop operations.
javaf/backoff-stack
Backoff stack is an unbounded lock-free LIFO linked list, where pushes and pops synchronize at a single location.
javaf/bathroom-lock
A Bathroom Lock allows N genders (thread types) to access a common bathroom (critical section) such that different genders do not clash.
javaf/bowling-alley
Bowling Alley Management System assignment in Software Engineering Course.
javaf/coarse-set
Coarse Set is a collection of unique elements maintained as a linked list. It uses a coarse grained lock, and useful when contention is low.
javaf/dining-philosophers-problem
The dining philosophers problem is an example problem often used in concurrent algorithm design.
javaf/extra-boolean
Boolean data type has two possible truth values to represent logic.
javaf/fine-set
Fine Set is a collection of unique elements maintained as linked list. It uses fine grained locks, allowing pipelined traversal by threads.
javaf/hello-world
A "Hello, World!" is an introductory computer program.
javaf/javaf.github.io
A summary of programs written in Java.
javaf/k-compare-single-swap
k-compare single-swap (KCSS) is an extension of CAS that enables atomically checking multiple addresses before making an update.
javaf/optimistic-set
Optimistic Set is a linked-list based unique collection. It traverses the list twice per operation, only locking the nodes to be updated.
javaf/periodic-network
Periodic network is a balanced counting network that allows processes to decompose operations, like counting, and reduce memory contention.
javaf/savings-account
A savings account is used to store salary/savings in a bank. This is a concurrent object (RAM) based account. For educational purposes only.
javaf/simple-reentrant-lock
A lock is re-entrant if it can be acquired multiple times by the same thread. Java already provides one. This for educational purposes only.
javaf/simple-semaphore
Semaphore is a generalization of mutual exclusion locks. It allows at most N threads into critical section. Java has a built-in Semaphore.
javaf/tas-lock
Test-and-set Lock uses an atomic value for critical section execution, and is suitable for educational purposes only.
javaf/ttas-lock
Test-test-and-set Lock uses an atomic value for critical section execution, and is suitable for low contention memory-limited architectures.