Copyright | (c) Naoto Shimazaki 2017 |
---|---|
License | MIT (see the file LICENSE) |
Maintainer | https://github.com/nshimaza |
Stability | experimental |
Safe Haskell | Safe |
Language | Haskell2010 |
Internal implementations of Control.Concurrent.Hierarchy
- newtype FinishMarker = FinishMarker (MVar ())
- newtype ThreadMap = ThreadMap (MVar (Map ThreadId FinishMarker))
- newThreadMap :: MonadBase IO m => m ThreadMap
- newChild :: MonadBaseControl IO m => ThreadMap -> (ThreadMap -> m ()) -> m ThreadId
- killThreadHierarchy :: MonadBase IO m => ThreadMap -> m ()
- newFinishMarker :: MonadBase IO m => m FinishMarker
- markFinish :: MonadBase IO m => FinishMarker -> m ()
- waitFinish :: MonadBase IO m => FinishMarker -> m ()
- cleanup :: MonadBase IO m => FinishMarker -> ThreadMap -> ThreadMap -> m ()
Documentation
newtype FinishMarker Source #
FinishMarker is created as empty MVar when a thread is created. It is automatically filled by () when the thread exits.
FinishMarker (MVar ()) |
Mutable map containing thread ID and finish marker.
:: MonadBaseControl IO m | |
=> ThreadMap | ThreadMap where newly created thread will be registered. |
-> (ThreadMap -> m ()) | Action executed within the new thread. |
-> m ThreadId | newChild returns ThreadId of created thread. |
Create a new thread and register it to given ThreadMap
.
Kill all thread registered in given ThreadMap
.
newFinishMarker :: MonadBase IO m => m FinishMarker Source #
Create new empty finish marker. Internal use only.
markFinish :: MonadBase IO m => FinishMarker -> m () Source #
Filling MVar of finish marker to mark thread finished. Only used by cleanup routine internally.
waitFinish :: MonadBase IO m => FinishMarker -> m () Source #
Wait for finish marker marked. Only used by killThreadHierarchy routine internally.