stm-io-hooks-0.1.0: Control/Concurrent/AdvSTM/TVar.hs-boot
-----------------------------------------------------------------------------
-- |
-- Module : Control.Concurrent.AdvSTM.TVar
-- Copyright : (c) Peter Robinson 2009
-- License : BSD-style (see the file LICENSE)
--
-- Maintainer : Peter Robinson <robinson@ecs.tuwien.ac.at>
-- Stability : experimental
-- Portability : non-portable (requires STM)
--
--
--
-----------------------------------------------------------------------------
module Control.Concurrent.AdvSTM.TVar( TVar ) {- ( -- * TVars
TVar
, newTVar
, newTVarIO
, readTVar
, writeTVar
) -}
where
import qualified Control.Concurrent.STM.TVar as OldTVar
import qualified Control.Concurrent.STM as STM
import qualified Control.Concurrent.STM.TMVar as OldTMVar
import qualified Control.Concurrent.STM.TChan as OldTChan
import Control.Exception(throw,Deadlock(Deadlock))
-- import Control.Concurrent.AdvSTM(liftAdv,orElse,retry)
-- import Control.Monad.AdvSTM.Def(AdvSTM(AdvSTM),transThreadId,listeners,TVarValue(TVarValue))
import Control.Concurrent(ThreadId)
import Control.Monad(liftM,ap,unless)
import Control.Monad.Reader(asks)
import Data.Maybe(isJust,Maybe,fromJust)
import qualified Data.Set as S
--------------------------------------------------------------------------------
data TVar a = TVar
{ valueTVar :: OldTVar.TVar a
, onCommitLock :: OldTMVar.TMVar ()
, currentTid :: OldTVar.TVar (Maybe ThreadId)
}