[Haskell-beginners] Thread Blocking

Eugene Perederey eugene.perederey at gmail.com
Tue Sep 4 21:02:51 CEST 2012


Why do you think main should block more than once?
I see only two possible scenarios: the fun thread puts to mvar first
thus blocking main,
or 10 is put into mvar in main, blocking the other thread indefinitely.


On 4 September 2012 11:54, mukesh tiwari <mukeshtiwari.iiitm at gmail.com> wrote:
> Hello All
> I was going trough Real World Haskell and it says "If we try to put a value
> into an MVar that is already full, our thread is put to sleep until another
> thread takes the value out". I wrote a simple code to block main
>
> import Data.List
> import Control.Concurrent
>
> fun m = do
>    putMVar m 10
>    return ()
>
>
> main = do
>   m <- newEmptyMVar
>   forkIO $ fun m
>   putMVar m 10
>   return ()
>
> What I am expecting that main should be blocked at least couple of times
> but its behaving more deterministically.
> [mukesh.tiwari@ Programming]$ ghc-7.4.1 -threaded -fforce-recomp
> Concurrent.hs
> [1 of 1] Compiling Main             ( Concurrent.hs, Concurrent.o )
> Linking Concurrent ...
> [mukesh.tiwari@ Programming]$ ./Concurrent  +RTS -N2
> [mukesh.tiwari@ Programming]$ ./Concurrent  +RTS -N2
> [mukesh.tiwari@ Programming]$ ./Concurrent  +RTS -N2
> [mukesh.tiwari@ Programming]$ ./Concurrent  +RTS -N2
> [mukesh.tiwari@ Programming]$ ./Concurrent  +RTS -N2
> [mukesh.tiwari@ Programming]$ ./Concurrent  +RTS -N2
> [mukesh.tiwari@ Programming]$ ./Concurrent  +RTS -N2
> [mukesh.tiwari@ Programming]$ ./Concurrent  +RTS -N2
> [mukesh.tiwari@ Programming]$ ./Concurrent  +RTS -N2
> [mukesh.tiwari@ Programming]$ ./Concurrent  +RTS -N2
> [mukesh.tiwari@ Programming]$ ./Concurrent  +RTS -N2
> [mukesh.tiwari@ Programming]$ ./Concurrent  +RTS -N2
> [mukesh.tiwari@ Programming]$ ./Concurrent  +RTS -N2
> [mukesh.tiwari@ Programming]$ ./Concurrent  +RTS -N2
> [mukesh.tiwari@ Programming]$ ./Concurrent  +RTS -N2
> [mukesh.tiwari@ Programming]$
>
> I am expecting to get thread blocked indefinitely on MVar at least half the
> time. Could some one please tell me why this deterministic behavior ?
> Regards
> Mukesh Tiwari
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>



-- 
Best,
Eugene Perederey



More information about the Beginners mailing list