loony
loony copied to clipboard
A high throughput MPMC lock-free queue based on a paper by Giersch, Nolte et al implemented in pure Nim.
Hi, i see SIGSEGV on calls to `queue.isEmpty`. The queue is initialized using `newLoonyQueue`. It has not received any items yet. I tried `if`- and `while` - makes no difference....
I've refactored the library to stop using the std/atomics because it was very restrictive. Pros: std/atomics restriction on the types allowed for its operations to work has been removed Cons:...
The consumers are the slowest set of operations. A single consumer loonyqueue would be drastically faster for MPSC situation. I have implemented a version of the LoonyQueueSC, however there is...
Added `loonyPadding` compiler option which would just padd each loony field onto a cache line of its own. In my benchmarks I couldn't really see a difference, will need to...
Implements len proc (tested outside of test suite) Removes utils/futex and introduces dependency on externally maintained futexes library.
Thread analyzer determines the [deallocshared](https://github.com/nim-lang/Nim/blob/e3b19cbe52e0578de315d259fbb066bfe991a60f/lib/system/threads.nim#L185) proc called by a thread on completion is a data-race. Atm only solution I can come up with involves changing or providing a modified std...
Refactor all these alias types like TagPtr to use a distinct type with converters to avoid boilerplate spaghetti as per disruptek
Orc crashes when a Continuation (or any ref object) passed through the queue reaches the end of its life span and the final `=destroy` is run. This is evident by...
Using a slightly modified example code for more consumer threads my system throws SIGSEGV error. ```nim import std/[locks, os, atomics] import loony type Message = ref object value: string let...