Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Main (main) where
- import Control.Concurrent
- import Control.Concurrent.STM
- fib :: Integer -> Integer
- fib 0 = 1
- fib 1 = 1
- fib x = (fib $ x - 1) + (fib $ x - 2)
- intensive tv n = atomically $ putTMVar tv $! (fib n)
- main = do t1 <- newEmptyTMVarIO
- t2 <- newEmptyTMVarIO
- forkIO $ intensive t1 37
- putStrLn "Launched first"
- forkIO $ intensive t2 38
- putStrLn "Launched second"
- r1 <- atomically $ readTMVar t1
- r2 <- atomically $ readTMVar t2
- print r1
- print r2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement