:コンソールに出力Haskellの子スレッドからエラーをどのように出力しますか?次のコードを考える
"You can't see me"
"Finished!"
:
module Main where
import Control.Concurrent
main :: IO()
main = forkIO errorPrinter >> threadDelay 1000000 >> print "Finished"
errorPrinter = error "You can't see me!"
を、私はこのコードを実行している時に、私はこれを見るだろうと、期待します。しかし、「あなたは私を見ることができない」という言葉は決して印刷されません。
プロダクションコードではエラーを使用するのは良い考えではありませんが、私はそれを開発に使用していますが、コンソールにはエラーは表示されません。
この問題には簡単な解決策があると確信しています。私はこの問題を抱える最初の人になることはできませんが、どこでも答えは見つけられません。
ご協力いただければ幸いです。
メインスレッドが終了すると、他のスレッドはすべて終了します。メインスレッドは、もう一方のスレッドを待機させる必要があります。ソリューションについては、[プログラム]の終了について[docs](http://hackage.haskell.org/package/base-4.9.1.0/docs/Control-Concurrent.html#g:12)を確認してください。 – chi
助けてくれてありがとう。あなたはthreadDelayへの呼び出しに気付きましたか?私はそれが完了するために子スレッドを許可するのに十分長いメインスレッドを一時停止する必要がありますと思う。 –
そうです、遅延がなぜ役に立たないのか分かりません。 – chi