Thank you Bulat, makes total sense. This list is a treasure trove of a resource.

I guess this is what happens when you go from Erlang to Haskell :-). I'm conditioned to think of everything as a process and uses processes for everything.

On Dec 13, 2005, at 11:17 AM, Bulat Ziganshin wrote:

import Control.Concurrent
import Control.Monad
import System.IO
import System.IO.Unsafe

main = do h <- openBinaryFile "test" WriteMode
          for [1..100] $ \n ->
            forkIO $
              for [1..] $ \i ->
                logger h ("thread "++show n++" msg "++show i)
          getLine
          hClose h

lock = unsafePerformIO$ newMVar ()

logger h msg = withMVar lock $ const$ do
                 hPutStrLn h msg
                 putStrLn msg

for = flip mapM_

--
http://wagerlabs.com/





_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to