packages feed

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)
    }