Commit Graph

53 Commits

Author SHA1 Message Date
Michael Walker
a889b23b5d Add alwaysTrue and alwaysTrue2 functions for SCT tests 2015-01-12 19:08:09 +00:00
Michael Walker
78fbf5e5c6 Interpret a pre-emption bound < 0 as no bound 2015-01-12 17:52:30 +00:00
Michael Walker
886da7195e Provide utilities for writing SCT test cases 2015-01-12 17:27:41 +00:00
Michael Walker
fb44f15865 Use NonEmpty in Lazy to get rid of a pattern match warning 2015-01-12 16:28:16 +00:00
Michael Walker
b062d1e14c Structure runSCT' and runSCTIO' explicitly as unfolds, to make clearer how the state evolves 2015-01-12 16:28:04 +00:00
Michael Walker
6aefd27e9a Tuple up scheduler & runner sct states, as partial application doesn't really make sense 2015-01-12 16:04:23 +00:00
Michael Walker
ff015054f4 Use a non-empty list type for scheduler threads 2015-01-12 15:58:53 +00:00
Michael Walker
bf91775629 Remove Ord instances 2015-01-12 14:25:06 +00:00
Michael Walker
0f1675070b Update documentation 2015-01-12 14:24:12 +00:00
Michael Walker
8d23ad1fbe Wrap up PB scheduler state in a record 2015-01-12 13:26:04 +00:00
Michael Walker
4efd3b5a25 Consider pre-emptions around liftIOs in PB runner 2015-01-12 00:13:49 +00:00
Michael Walker
9aee30ac57 Deconflate lifting and creating new CVars in Fixed 2015-01-12 00:08:53 +00:00
Michael Walker
9745357817 Fix comment 2015-01-09 02:38:53 +00:00
Michael Walker
981169c25f Vastly improve PB runner 2015-01-09 02:35:28 +00:00
Michael Walker
c0ac24773e Fix comment 2015-01-09 02:29:21 +00:00
Michael Walker
6272abe7fd Fix the pre-emption runner (wasn't generating suffixes correctly) 2015-01-05 15:05:29 +00:00
Michael Walker
242babbc05 Fix a fromJust issue in Fixed 2015-01-05 12:01:06 +00:00
Michael Walker
1aa8765f4e Significantly faster PB runner, and enable 100 philosophers test 2015-01-05 06:42:41 +00:00
Michael Walker
f7ad64fe5b Add a pre-emption bounding runner, and use it for tests 2015-01-04 21:48:00 +00:00
Michael Walker
edbe04be64 Add SCT runners which maintain internal state 2015-01-04 15:06:53 +00:00
Michael Walker
000b91780e Add a variant of runSCT for IO Conc 2014-12-28 12:12:57 +00:00
Michael Walker
34ac178ca7 Tidy Fixed.Internal a bit. 2014-12-27 22:24:07 +00:00
Michael Walker
220589f68c Use record syntax to get unC functions 2014-12-27 22:03:37 +00:00
Michael Walker
3957f5edfa 'Action's don't need the 't' 2014-12-27 15:38:56 +00:00
Michael Walker
7e6fcd4a39 Swap main Fixed implementation from IO to ST. 2014-12-27 12:26:40 +00:00
Michael Walker
d215306911 Implement a Fixed variant using ST to get a pure result.
Following discussion on Twitter, https://twitter.com/barrucadu/status/548496893127712768
2014-12-27 12:20:45 +00:00
Michael Walker
a1d637e87c Build a trace of thread actions in Fixed 2014-12-24 21:41:32 +00:00
Michael Walker
a78f211919 Fix some hlint warnings 2014-12-23 15:51:46 +00:00
Michael Walker
554fa84ec7 Enable -Wall and fix all warnings 2014-12-21 16:34:55 +00:00
Michael Walker
7819a3c7b0 Provide a helper function to turn Schedulers into SCTSchedulers 2014-12-21 13:50:52 +00:00
Michael Walker
875c5319ee Fix an inverted filter in Fixed 2014-12-21 13:50:37 +00:00
Michael Walker
37f3767290 Record possible alternative scheduling decisions in SCT 2014-12-21 13:25:48 +00:00
Michael Walker
d0e01c579a Fix type of example in SCT 2014-12-21 13:00:43 +00:00
Michael Walker
96eaf85095 Record in SCT trace reasons for decisions.
In particular, this lets us distinguish between switching to a new
thread because the old was blocked, or switching to a new thread
because of a pre-emption.
2014-12-21 12:48:15 +00:00
Michael Walker
8b0f2763d3 Add some helpful CVar combinators 2014-12-21 09:38:25 +00:00
Michael Walker
6a3e5f50c2 Add a 'tryPutCVar' primitive, and implement 'putCVar' in terms of it 2014-12-21 09:37:52 +00:00
Michael Walker
9a6fcc5162 Rename all CVar functions to avoid name clashes with Prelude. Fixes #1. 2014-12-21 07:47:45 +00:00
Michael Walker
5f85be3574 Simpler detection of deadlock in Fixed 2014-12-20 20:31:25 +00:00
Michael Walker
82e9241686 Add a simple runner which gathers results and schedulings from multiple runs 2014-12-20 11:03:49 +00:00
Michael Walker
86a2617b41 Mutating a CVar only wakes up threads blocked on that CVar. 2014-12-20 10:42:58 +00:00
Michael Walker
df5756c812 Fix a couple of bugs in the Fixed runner 2014-12-20 09:20:48 +00:00
Michael Walker
41050131fb Prevent CVars from leaking out of a Conc computation 2014-12-20 07:45:18 +00:00
Michael Walker
374b8a5c4e Fix doc typo 2014-12-19 21:39:06 +00:00
Michael Walker
00e7a420ee Clarify Fixed.Scheduler docs, and properly detect deadlock in runThreads 2014-12-19 21:34:53 +00:00
Michael Walker
50944f0d95 Implement a round-robin scheduler 2014-12-19 07:21:00 +00:00
Michael Walker
88535bb5ff Optionally return the final scheduler state 2014-12-19 07:12:22 +00:00
Michael Walker
bc7607ad24 Implement a simple random scheduler 2014-12-19 07:09:26 +00:00
Michael Walker
44593b43cc Re-export and document all primitives from Fixed 2014-12-19 06:59:41 +00:00
Michael Walker
83fb25a6d7 Add a ConcFuture/ConcCVar which is parametrised by a fixed scheduler. 2014-12-19 06:45:50 +00:00
Michael Walker
070d034de9 Implement IO's 'spawn' in terms of other conc primitives 2014-12-19 06:24:50 +00:00