summaryrefslogtreecommitdiff
path: root/testsuite/tests/concurrent/prog002/Server.hs
blob: ce338b7543d8abce05b8b58ca51ee5b14a0bfac4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import Scheduler
import Foreign
import Foreign.C
import System.Random
import Control.Concurrent

expensive = f (500 :: Int)
  where f 0 = stop
        f n = do
              r <- atom $ getStdRandom (randomR (0,99::Int))
              r `seq` f $! n-1

main = do
  m <- newEmptyMVar
  forkIO (do
          runTIO $ map (\x->expensive) [1..500]
          putMVar m ())
  takeMVar m