Comments (4)
Thanks -- I'll take a look.
from haskell-lockfree.
I think this is resolved now that Ryan's sorted out the broken CPP, right? @rrnewton
from haskell-lockfree.
Yes, this was a horrible horrible bug (issue #15). It was falling through to the vanilla C, NONATOMIC implementations. Terrible! Worst possible thing for an atomic-primops library to do.
Fortunately, it's fixed now as of release 0.5.0.2, if you want to take another look @jberryman ...
Btw, there are similar test cases to this one in the repo, but it's interesting how this one uses "start" MVars. Presumably that's to allow the threads to migrate to other CPUs before blocking, and to thereby increase the degree they are contending? If this does bring the start-times of the threads closer together, we should change all our tests to use it.
from haskell-lockfree.
Well don't beat yourself up! Glad I could help, and looking forward to seeing where all this work leads.
Presumably that's to ... increase the degree they are contending?
Yeah, that was the idea although I didn't think too much about it to be honest. A more paranoid solution would be to have each forked thread block until all it's sibling worker threads have been forked, like:
do readyCount <- newTVar 0
replicateM_ 2 $ forkIO $ incrementThenRetryUntilEqualsTwo readyCount >> doTest
...
blockMainThreadUntilDone
It also might be advisable to force the cabal tests to fail with a message if run without -N2
or more (if that doesn't already happen).
from haskell-lockfree.
Related Issues (20)
- Cannot find module "Data.Atomics.Counter.Unboxed" HOT 6
- Are memory barriers compiler reordering barriers? HOT 1
- Various cabal issues.
- Saw a genuine nondeterministic test failure
- atomic-primops: can GC duplication of pure objects screw up Tickets and cause a false negative?
- atomic-primops: ghc 8 support needed HOT 7
- Build fail on armv8
- atomic-primops: Need to make barriers inline primops HOT 3
- Missing load-store barrier HOT 1
- [chaselev-deque] stackage availability HOT 4
- Provide loop wrapper for casArrayElem? HOT 2
- Implement multi-item CAS (CASN) HOT 2
- Cut a new atomic-primops release for GHC 8.2.1 HOT 2
- testing/Fetch.hs missing from Hackage release HOT 1
- Recursion in haddocks of `atomic-primops` HOT 1
- CAS fails with newly created ticket HOT 8
- CAS very rarely fails not due to a race, in GHC >= 8.2
- [lockfree-queue]: GHC 9.4 support HOT 2
- Release chaselev-deque-0.5.0.6 on hackage HOT 1
- No more load_load_barrier in GHC HEAD HOT 10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from haskell-lockfree.