Ticket #551: test.2.hs

File test.2.hs, 521 bytes (added by chak, 14 years ago)
Line 
1import Concurrent
2import Exception
3import IOExts
4import Weak
5
6data P = P (MVar Bool)
7
8main = do
9--  gcThread  -- with this thread enabled, no error
10  mv <- newEmptyMVar
11  let p = P mv
12  addFinalizer p (set p)
13  takeMVar mv >>= print
14  putStrLn "End."
15  where
16    set (P mv) = putMVar mv True
17    --
18    -- this is just to demonstrate that it is only about the GC timing
19    --
20    gcThread = forkIO $ let gc = do
21                                   putStrLn "delay"
22                                   threadDelay 100000
23                                   putStrLn "gc"
24                                   performGC
25                                   gc
26                        in gc