úÎ)Ú$Š'      !"#$%&$(C) 2015 Edward Kmett and Ted Cooper BSD-style (see the file LICENSE)PEdward Kmett <ekmett@gmail.com> Ted Cooper <anthezium@gmail.com> experimental non-portableSafe134579>ILNOThis is the executor service that can fork, join and execute critical sections.A read-side critical sectionA write-side critical sectionThreads we can fork and join Fork a thread Join a thread Run a read-side critical section!Run a write-side critical section%This is a write-side critical section Write to a shared reference. Synchronize with other writers.No other writer can straddle this time bound. It will either see writes from before, or writes after, but never some of both! $This is a read-side critical section Read a shared reference.Build a new shared referenceCopy a shared reference.4 '()*+,-./0123456789:;<=>?@ABCDEFGHIJ    )  '()*+,-./0123456789:;<=>?@ABCDEFGHIJ$(C) 2015 Edward Kmett and Ted Cooper BSD-style (see the file LICENSE)REdward Kmett <ekmett@gmail.com>, Ted Cooper <anthezium@gmail.com> experimental non-portableNone-13457>CILNThis is a basic F thread. It may be embellished when running in a more exotic context.'This is an RCU computation. It can use  and , to form new threads, and then you can use  and › to run classic read-side and write-side RCU computations. Writers are serialized using an MVar, readers are able to proceed while writers are updating.DThis is the basic write-side critical section for an RCU computationCThis is the basic read-side critical section for an RCU computationState for an RCU computation.KCounter for causal ordering.#Shared references&Run an RCU computation.4 !"K#$%LMNOPQRSTU&VWXYZ[\]^_`abcdefg !"#$%&#$%& !"$ !"K#$%LMNOPQRSTU&VWXYZ[\]^_`abcdefg$(C) 2015 Edward Kmett and Ted Cooper BSD-style (see the file LICENSE)PEdward Kmett <ekmett@gmail.com> Ted Cooper <anthezium@gmail.com> experimental non-portable Trustworthy #&#&   h      !""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefrcu_4NVP7PMBovkAEyGT8oidufControl.Concurrent.RCU.QSBRControl.Concurrent.RCU.Class$Control.Concurrent.RCU.QSBR.InternalMonadRCUReadingWritingThreadforkingjoiningreadingwriting MonadWriting writeSRef synchronize MonadReadingreadSRefMonadNewnewSRefcopySRef RCUThread rcuThreadId rcuThreadVarRCUunRCU WritingRCU runWritingRCU ReadingRCU runReadingRCURCUStatercuStateGlobalCounterrcuStateMyCounterrcuStateThreadCountersVrcuStateWriterLockVSRefunSRefrunRCU$fMonadRCUsWriterT$fMonadRCUsWriterT0$fMonadRCUsMaybeT$fMonadRCUsExceptT$fMonadRCUsIdentityT$fMonadRCUsReaderT$fMonadWritingsMaybeT$fMonadWritingsExceptT$fMonadWritingsIdentityT$fMonadWritings'RWST$fMonadWritings'RWST0$fMonadWritings'StateT$fMonadWritings'StateT0$fMonadWritingsWriterT$fMonadWritingsWriterT0$fMonadWritingsReaderT$fMonadReadingsIdentityT$fMonadReadingsMaybeT$fMonadReadingsExceptT$fMonadReadings'RWST$fMonadReadings'RWST0$fMonadReadings'StateT$fMonadReadings'StateT0$fMonadReadingsWriterT$fMonadReadingsWriterT0$fMonadReadingsReaderT$fMonadNewsIdentityT$fMonadNewsMaybeT$fMonadNewsExceptT$fMonadNews'RWST$fMonadNews'RWST0$fMonadNews'StateT$fMonadNews'StateT0$fMonadNewsWriterT$fMonadNewsWriterT0$fMonadNewsReaderTCounter newSRefIO readSRefIO writeSRefIOofflineonline newCounter readCounter writeCounter incCounter synchronizeIO $fMonadIORCU$fMonadRCUSRefRCU$fMonadNewSRefRCU $fMonadRCU$fApplicativeRCU$fMonadWritingSRefWritingRCU$fMonadReadingSRefWritingRCU$fMonadNewSRefWritingRCU$fMonadPlusWritingRCU$fAlternativeWritingRCU$fMonadWritingRCU$fApplicativeWritingRCU$fMonadReadingSRefReadingRCU$fMonadNewSRefReadingRCU$fMonadPlusReadingRCU$fAlternativeReadingRCU$fMonadReadingRCU$fApplicativeReadingRCU