reorg
This commit is contained in:
parent
9356f11c60
commit
e84b78f40c
2 changed files with 15 additions and 16 deletions
|
@ -7,11 +7,7 @@
|
|||
|
||||
module Utility.ThreadLock where
|
||||
|
||||
import Common
|
||||
|
||||
import System.Posix.Terminal
|
||||
import Control.Concurrent.MVar
|
||||
import System.Posix.Signals
|
||||
|
||||
type Lock = MVar ()
|
||||
|
||||
|
@ -21,15 +17,3 @@ newLock = newMVar ()
|
|||
{- Runs an action with a lock held, so only one thread at a time can run it. -}
|
||||
withLock :: Lock -> IO a -> IO a
|
||||
withLock lock = withMVar lock . const
|
||||
|
||||
{- Pauses the main thread, letting children run until program termination. -}
|
||||
waitForTermination :: IO ()
|
||||
waitForTermination = do
|
||||
lock <- newEmptyMVar
|
||||
check softwareTermination lock
|
||||
whenM (queryTerminal stdInput) $
|
||||
check keyboardSignal lock
|
||||
takeMVar lock
|
||||
where
|
||||
check sig lock = void $
|
||||
installHandler sig (CatchOnce $ putMVar lock ()) Nothing
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue