summaryrefslogtreecommitdiff
path: root/Com
diff options
context:
space:
mode:
Diffstat (limited to 'Com')
-rw-r--r--Com/Simatime/Go.hs12
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