Personal tools

Running processes concurrently

From HaskellWiki

(Difference between revisions)
Jump to: navigation, 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.")