Vesa Karvonen
Vesa Karvonen
This adds a solution to the sleeping barbers problem as an example of using Kcas data structures. Note the solution uses a bounded `Queue`. This PR must not be merged...
This PR adds optional `capacity` argument to `Queue.create` and `Stack.create` allowing one to create a bounded queue/stack. TODO: - [x] Add capacity to stack. - [ ] Allow setting the...
This PR adds another benchmark that stresses the transaction mechanism. The benchmark is based on a naïve leftist heap data structure. The problem with that is that every operation modifies...
Being able to freely point to locations in a double-linked list allows more uses for a double-linked list.
This PR changes Kcas to use [Picos](https://github.com/ocaml-multicore/picos/) instead of [DLA](https://github.com/ocaml-multicore/domain-local-await) and [DLT](https://github.com/ocaml-multicore/domain-local-timeout) for scheduler interop. ⚠️ This must obviously not be merged before at least a first release of Picos...
Currently, if an action registered with `Xt.post_commit` raises an exception, then [actions registered later will not be called](https://github.com/ocaml-multicore/kcas/blob/1f7130514e8bbdfa57c05f1b54e21643136e1e4a/src/kcas/kcas.ml#L109-L110). At the very least this and the order in which actions will...
The `kcas` library currently lacks benchmarks, tests, and cool examples and those can also serve as a good way to understand k-CAS itself. The [`kcas_data`](https://ocaml-multicore.github.io/kcas/doc/kcas_data/Kcas_data/index.html) library provides a few data...
**kcas** aims to be usable both * for experts implementing correct and performant lock-free data structures, and * for everyone gluing together programs using such data structures. The second bullet...