import Control.Concurrent
main = do
forkIO $ putStrLn "123"
forkIO $ putStrLn "456"
Ho scritto il codice sopra. Ma quando l'ho eseguito, ho sempre ricevuto solo 123
. 456
non viene stampato. Suppongo che sia perché il thread principale è finito prima dell'altro thread, quindi l'intero programma è appena finito.Come posso assicurarmi che il filo principale termini dopo che tutti gli altri fili sono finiti?
Come posso evitare questo? Qualsiasi API può assicurarsi che il thread principale sia terminato dopo che tutti i thread sono terminati?
OS: OS X 10.8.3
compilatore: GHC 7.4.2
3) È facile per qualcuno che viene da un'altra lingua capire. "async" e "wait" hanno facilmente inteso i significati inglesi. D'altra parte, ">> putMvar done()" e "takeMvar done" sono incomprensibili. – 7stud
o 'contemporaneamente (putStrLn" 123 ") (putStrLn" 456 ")' – JJJ