diff options
Diffstat (limited to 'Com/Simatime')
-rw-r--r-- | Com/Simatime/Go.hs | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/Com/Simatime/Go.hs b/Com/Simatime/Go.hs index e552a90..bd9296a 100644 --- a/Com/Simatime/Go.hs +++ b/Com/Simatime/Go.hs @@ -23,12 +23,14 @@ where import Com.Simatime.Alpha hiding ( read ) import qualified Control.Concurrent as Concurrent -import qualified Control.Concurrent.Chan.Unagi as Chan +import qualified Control.Concurrent.Chan.Unagi.Bounded + as Chan -- | A standard channel. data Channel a = Channel { _in :: Chan.InChan a , _out :: Chan.OutChan a + , _size :: Int } -- | Starts a background process. @@ -36,10 +38,10 @@ fork :: IO () -> IO Concurrent.ThreadId fork = Concurrent.forkIO -- | Make a new channel. -chan :: IO (Channel a) -chan = do - (i, o) <- Chan.newChan - return <| Channel i o +chan :: Int -> IO (Channel a) +chan n = do + (i, o) <- Chan.newChan n + return <| Channel i o n -- | A channel for broadcasting to multiple consumers. See 'mult'. type Mult a = Chan.OutChan a |