-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Bindings for the pthread library.
--   
--   Bindings for the pthread library.
@package pthread
@version 0.2.0


-- | Bindings to the POSIX threads library.
--   
--   Requires linking with the <tt>-threaded</tt> RTS.
module System.Posix.Thread

-- | Create a new thread.
create :: IO (Ptr a) -> IO ThreadId

-- | Like <a>create</a>, but with an <a>IO</a> computation that returns
--   nothing.
create_ :: IO () -> IO ThreadId

-- | Create a new thread.
createWithAttributes :: AttributesMonoid -> IO (Ptr a) -> IO ThreadId

-- | Like <a>createWithAttributes</a>, but with an <a>IO</a> computation
--   that returns nothing.
createWithAttributes_ :: AttributesMonoid -> IO () -> IO ThreadId

-- | Terminate calling thread.
exit :: Ptr a -> IO ()

-- | Like <a>exit</a>, but don't return anything.
exit_ :: IO ()

-- | Send a cancellation request to a thread.
cancel :: ThreadId -> IO ()

-- | Join with a terminated thread.
join :: ThreadId -> IO (Ptr a)

-- | Detach a thread.
detach :: ThreadId -> IO ()

-- | Obtain ID of the calling thread.
myThreadId :: IO ThreadId

-- | Thread attributes.
data Attributes
Attributes :: DetachState -> CSize -> InheritSched -> SchedParam -> SchedPolicy -> Scope -> Ptr () -> CSize -> Attributes
[$sel:detachState:Attributes] :: Attributes -> DetachState
[$sel:guardSize:Attributes] :: Attributes -> CSize
[$sel:inheritSched:Attributes] :: Attributes -> InheritSched
[$sel:schedParam:Attributes] :: Attributes -> SchedParam
[$sel:schedPolicy:Attributes] :: Attributes -> SchedPolicy
[$sel:scope:Attributes] :: Attributes -> Scope
[$sel:stack:Attributes] :: Attributes -> Ptr ()
[$sel:stackSize:Attributes] :: Attributes -> CSize

-- | Partial set of thread attributes. Think of it as a diff to apply to
--   the default attributes object.
data AttributesMonoid
AttributesMonoid :: First DetachState -> First CSize -> First InheritSched -> First SchedParam -> First SchedPolicy -> First Scope -> First (Ptr ()) -> First CSize -> AttributesMonoid
[$sel:detachState:AttributesMonoid] :: AttributesMonoid -> First DetachState
[$sel:guardSize:AttributesMonoid] :: AttributesMonoid -> First CSize
[$sel:inheritSched:AttributesMonoid] :: AttributesMonoid -> First InheritSched
[$sel:schedParam:AttributesMonoid] :: AttributesMonoid -> First SchedParam
[$sel:schedPolicy:AttributesMonoid] :: AttributesMonoid -> First SchedPolicy
[$sel:scope:AttributesMonoid] :: AttributesMonoid -> First Scope
[$sel:stack:AttributesMonoid] :: AttributesMonoid -> First (Ptr ())
[$sel:stackSize:AttributesMonoid] :: AttributesMonoid -> First CSize

-- | Opaque objects used to locate thread-specific data.
data Key

-- | Thread-specific data key creation.
createKey :: FunPtr (Ptr a -> IO ()) -> IO Key

-- | Like <a>createKey</a>, but with no finalizer.
createKey_ :: IO Key

-- | Thread-specific data key deletion.
deleteKey :: Key -> IO ()

-- | Associate a thread-specific <i>value</i> with a <i>key</i> obtained
--   via a previous call to <a>createKey</a>.
setSpecific :: Key -> Ptr a -> IO ()

-- | Return the value currently bound to the specified key on behalf of the
--   calling thread.
getSpecific :: Key -> IO (Ptr a)
instance Foreign.Storable.Storable System.Posix.Thread.Key
instance GHC.Show.Show System.Posix.Thread.Key
instance GHC.Classes.Ord System.Posix.Thread.Key
instance GHC.Classes.Eq System.Posix.Thread.Key
instance GHC.Show.Show System.Posix.Thread.AttributesMonoid
instance GHC.Generics.Generic System.Posix.Thread.AttributesMonoid
instance GHC.Show.Show System.Posix.Thread.Attributes
instance GHC.Generics.Generic System.Posix.Thread.Attributes
instance GHC.Show.Show System.Posix.Thread.Scope
instance GHC.Classes.Eq System.Posix.Thread.Scope
instance GHC.Show.Show System.Posix.Thread.SchedPolicy
instance GHC.Classes.Eq System.Posix.Thread.SchedPolicy
instance GHC.Show.Show System.Posix.Thread.SchedParam
instance GHC.Classes.Eq System.Posix.Thread.SchedParam
instance GHC.Show.Show System.Posix.Thread.InheritSched
instance GHC.Classes.Eq System.Posix.Thread.InheritSched
instance GHC.Show.Show System.Posix.Thread.DetachState
instance GHC.Classes.Eq System.Posix.Thread.DetachState
instance Foreign.Storable.Storable System.Posix.Thread.ThreadId
instance GHC.Show.Show System.Posix.Thread.ThreadId
instance GHC.Classes.Ord System.Posix.Thread.ThreadId
instance GHC.Classes.Eq System.Posix.Thread.ThreadId
instance GHC.Exception.Exception System.Posix.Thread.ThreadNotBound
instance GHC.Show.Show System.Posix.Thread.ThreadNotBound
instance GHC.Base.Monoid System.Posix.Thread.AttributesMonoid
instance Foreign.Storable.Storable System.Posix.Thread.AttributesMonoid
instance Foreign.Storable.Storable System.Posix.Thread.Attributes
instance GHC.Enum.Enum System.Posix.Thread.Scope
instance GHC.Enum.Enum System.Posix.Thread.SchedPolicy
instance Foreign.Storable.Storable System.Posix.Thread.SchedParam
instance GHC.Enum.Enum System.Posix.Thread.InheritSched
instance GHC.Enum.Enum System.Posix.Thread.DetachState
