unagi-chan
unagi-chan copied to clipboard
A haskell library implementing fast and scalable concurrent queues for x86, with a Chan-like API
Is there a way to flush chan contents to a list? tryReadChan is definitely not what I want, as it removes elements from chan to Element with no way to...
If we can ensure we never allocate between the counter increment and the array write/read, then we get effectively a wait-free queue, can remove the "blocks at most one reader/writer"...
As can seen in a prior build report https://matrix.hackage.haskell.org/package/unagi-chan@1565619672 the upper bound `base < 5` wasn't accurate as there were build failures with base-4.13 Consequently, I've fixed up the metadata...
The full suite takes too long for travis, and there are a few tests that are pretty sensitive. Probably expose a very minimal set of tests in CI (unfortunately).
As expressed in `testNextistentSuccessFailure`. https://github.com/rrnewton/haskell-lockfree/issues/77 I can't remember whether we make use of this.
It would be straight-forward to add a function like: ``` readManyChan :: Int -> OutChan a -> IO [a] ``` that atomically reads `n` consecutive messages, blocking until all are...
In the `NoBlocking` documentation (under `isActive`), it says: > Note that in the blocking implementations a `BlockedIndefinitelyOnMVar` exception is raised, so this function is unnecessary. I can't see this mentioned...
On AArch64, the builds end on a linker error: ``` [ 507s] /usr/bin/ghc -shared -dynamic '-dynload deploy' -optl-Wl,-rpath,/usr/lib64/ghc-8.0.2/atomic-primops-0.8.0.4-FvFLsKpDYPjGSQUM1RkO57 -optl-Wl,-rpath,/usr/lib64/ghc-8.0.2/base-4.9.1.0 -optl-Wl,-rpath,/usr/lib64/ghc-8.0.2/ghc-prim-0.5.0.0 -optl-Wl,-rpath,/usr/lib64/ghc-8.0.2/integer-gmp-1.0.0.1 -optl-Wl,-rpath,/usr/lib64/ghc-8.0.2/primitive-0.6.2.0-4578caNkWQ54Gt1mxLF2Yh -optl-Wl,-rpath,/usr/lib64/ghc-8.0.2/rts -optl-Wl,-rpath,/usr/lib64/ghc-8.0.2/transformers-0.5.2.0 -hide-all-packages -no-auto-link-packages -no-user-package-db -package-db dist/package.conf.inplace -package-id...
``` Building unagi-chan-0.4.0.0... Preprocessing library unagi-chan-0.4.0.0... [ 1 of 14] Compiling Utilities ( src/Utilities.hs, dist/build/Utilities.o ) [ 2 of 14] Compiling Data.Atomics.Counter.Fat ( src/Data/Atomics/Counter/Fat.hs, dist/build/Data/Atomics/Counter/Fat.o ) [ 3 of 14]...
As I understand `unagi-chan` create segments with size of queue size which is passed to `newChan` function. And that means that even with fast readers and almost empty queue we...