import Control.Concurrent
main = do
forkIO $ putStrLn "123"
forkIO $ putStrLn "456"
Ich habe den obigen Code geschrieben. Aber als ich es ausführte, bekam ich immer nur 123
. 456
wird nicht gedruckt. Ich denke, es ist, weil der Haupt-Thread vor dem anderen Thread beendet wurde, so dass das ganze Programm gerade beendet wurde.Wie kann ich sicherstellen, dass das Haupt-Thread endet, nachdem alle anderen Threads geendet haben?
Wie kann ich das verhindern? Jede API kann sicherstellen, dass der Haupt-Thread beendet ist, nachdem alle Threads geendet haben?
OS: OS X 10.8.3
Compiler: GHC 7.4.2
3) Es ist leicht für jemanden aus einer anderen Sprache zu verstehen. Async und Wait haben englische Bedeutungen leicht verstanden. Auf der anderen Seite sind "putMvar done()" und "takeMvar done" unverständlich. – 7stud
oder 'gleichzeitig (putStrLn" 123 ") (putStrLn" 456 ")' – JJJ