úÎJSAA–      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•$(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-portableSafe69:;<=?DORTOThis 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  !"#$%&'()*+,-./0123    )   !"#$%&'()*+,-./01231(C) 2015 Edward Kmett, Paul Khuong and Ted Cooper BSD-style (see the file LICENSE)QEdward Kmett <ekmett@gmail.com>, Ted Cooper <anthezium@gmail.com> experimental non-portableNone#29:;<=BDIORT[ 4This is a basic 8F thread. It may be embellished when running in a more exotic context.8'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 computation>CThis is the basic read-side critical section for an RCU computationAState for an RCU computation.C Global stateG Thread state–Counter for causal ordering.IShared referencesLRun an RCU computation.M?Run an RCU computation in a thread pinned to a particular core.<456789:;<=>?@ABCDEFGH—˜–™IJKš›œžŸ ¡¢£¤LMNOPQRSTUVWXYZ[\]^_`456789:;<=>?@ABCDEFGHIJKLMIJK456789:LM>?@;<=ABCDEFGH(456789:;<=>?@ABCDEFGH—˜–™IJKš›œžŸ ¡¢£¤LMNOPQRSTUVWXYZ[\]^_`1(C) 2015 Edward Kmett, Paul Khuong and Ted Cooper BSD-style (see the file LICENSE)PEdward Kmett <ekmett@gmail.com> Ted Cooper <anthezium@gmail.com> experimental non-portable Trustworthy 468;>ILI8L   >;46$(C) 2015 Edward Kmett and Ted Cooper BSD-style (see the file LICENSE)QEdward Kmett <ekmett@gmail.com>, Ted Cooper <anthezium@gmail.com> experimental non-portableNone#29:;<=BDIORT eThis is a basic iF thread. It may be embellished when running in a more exotic context.i'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.lDThis is the basic write-side critical section for an RCU computationoCThis is the basic read-side critical section for an RCU computationrState for an RCU computation.t Global statex Thread state¥Counter for causal ordering.zShared references}Run an RCU computation.~?Run an RCU computation in a thread pinned to a particular core.:efghijklmnopqrstuvwxy¥¦z{|§¨©ª«¬­®¯°±}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘efghijklmnopqrstwxyuvz{|}~z{|efghijk}~opqlmnrstuvwxy'efghijklmnopqrstuvwxy¥¦z{|§¨©ª«¬­®¯°±}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘$(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 egiloz}zi}   oleg²      !"#$%&'()*+,-./0123456789::;<==>??@AABCCDEFGHIJJKLMNOPQRSTUVWXYZ[\]^_`abcd::;<==>??@AABCCDefGHIJJKLMNOPQRSTUVWXYZ[\]^_`abcdghhgijklmnopqrsggtijkuvlmnoqwrcu-0.2-6obmDxsDO8s8Sby9f6msIoControl.Concurrent.RCU.GCControl.Concurrent.RCU.Class"Control.Concurrent.RCU.GC.InternalControl.Concurrent.RCU.QSBR$Control.Concurrent.RCU.QSBR.InternalMonadRCUReadingWritingThreadforkingjoiningreadingwriting MonadWriting writeSRef synchronize MonadReadingreadSRefMonadNewnewSRefcopySRef$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$fMonadNewsReaderT RCUThread rcuThreadId rcuThreadVarRCUunRCU WritingRCU runWritingRCU ReadingRCU runReadingRCURCUStatercuStateGlobalCounterrcuStateGlobalVersionrcuStateThreadCountersVrcuStateWriterLockVrcuStateMyCounterrcuStatePinnedSRefunSRefrunRCUrunOnRCU $fMonadIORCU$fMonadRCUSRefRCU$fMonadNewSRefRCU $fMonadRCU$fApplicativeRCU$fMonadWritingSRefWritingRCU$fMonadReadingSRefWritingRCU$fMonadNewSRefWritingRCU$fMonadPlusWritingRCU$fAlternativeWritingRCU$fMonadWritingRCU$fApplicativeWritingRCU$fMonadReadingSRefReadingRCU$fMonadNewSRefReadingRCU$fMonadPlusReadingRCU$fAlternativeReadingRCU$fMonadReadingRCU$fApplicativeReadingRCU $fEqCounter$fEqSRef$fFunctorReadingRCU$fFunctorWritingRCU $fFunctorRCUrcuStateThreadCountersRrcuStateThreadCountersLockVCounterVersion newSRefIO readSRefIO writeSRefIO newCounter readCounter writeCounter incCounter newVersion synchronizeIOstuff sitAndSpinpauseofflineonline