gpt4 book ai didi

haskell - 为什么forkIO在haskell中创建的这两个函数不能一一运行呢?

转载 作者:行者123 更新时间:2023-12-04 01:10:24 25 4
gpt4 key购买 nike

我在 windows ghc 中有这个程序:

import Control.Concurrent

a=print 1
b=print 2

main=do
forkIO a
forkIO b

在console中只能打印1,为什么?

我认为主线程先运行,然后它创建一个线程,运行函数a,打印1,然后创建另一个线程,运行函数b,然后打印2

所以控制台会给我

12

最佳答案

好吧,我想我记得一些关于“Haskell 程序在主线程退出时结束”的事情。所以主线程在其他线程有机会做他们的事情之前就结束了。快速修复是

main = do
forkIO a
forkIO b
threadDelay (10^6) -- 1 second

一种不太快速但更正确的解决方法是使用 MVar 来模拟“加入”线程——即等待它完成。

关于haskell - 为什么forkIO在haskell中创建的这两个函数不能一一运行呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65017041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com