mirror of
https://github.com/barrucadu/dejafu.git
synced 2024-12-19 19:41:31 +03:00
c4eefd4849
If a decision will immediately block without changing the global state, then there is no point in making it: no state will become reachable from it which isn't reachable through some other option we have available. This has three parts: - When the prefix runs out and the scheduler is making decisions, it filters out decisions which will immediately block. - When a subtree is being added, it records which decisions will immediately block. - When backtracking points are being added, it filters out ones in this block list. This optimisation is likely to only be useful when threads are communicating a lot. For instance, a `parMap id` is totally unaffected by this, but the test cases drop from an average of 64 runs to 42. |
||
---|---|---|
.. | ||
Internal.hs |