Running processes concurrently: Difference between revisions
No edit summary |
BrettGiles (talk | contribs) 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.")