Difference between revisions of "Running processes concurrently"

From HaskellWiki
Jump to navigation Jump to search
 
m (categorize)
 
Line 1: Line 1:
  +
[[Category:How to]] [[Category:Code]]
 
This example forks many processes in parallel, then waits for each process to exit. Finally, it prints the number of failures.
 
This example forks many processes in parallel, then waits for each process to exit. Finally, it prints the number of failures.
   

Latest revision as of 21:22, 23 June 2007

This example forks many processes in parallel, then waits for each process to exit. Finally, it prints the number of failures.

import System.Process
import Control.Concurrent
import System.Exit

main = do
        let cmds = replicate 100 "sleep 10s"
        ps <- mapM runCommand cmds
        es <- mapM waitForProcess ps
        case length . filter (/= ExitSuccess) $ es of
            0 -> putStrLn "All commands ran successfully."
            n -> putStrLn ("There were " ++ show n ++ " failures.")