#simpleHttpなどを使ってURLからばかデカいデータを読み込んでいる際、途中で中断したい場合にはどうするのが正しいでしょうか。
#timeoutThread :: IO ()
timeoutThread = do
threadDelay $ 1000 * 1000 * 5
putStrLn "Timeout"
exitWith $ ExitFailure 4
#こんなスレッドを作って、forkIOしてプロセス全体を落せばいいのかなと思ったのですが、readそのものをキャンセルすることはできないみたいです。。。
#System.Timeout.timeout を使うのではダメですか?
#read に渡すバッファーは、ある程度の大きさで、繰り返している read をどうやって止めるかという話ですよね?
#ありがとうございます。System.Timeout.timeoutで止められました。自分のthreadidにthrowすれば良かったんですね。 forkIO (threadDelay n >> throwTo pid ex)
#"例外"と聞くだけで逃げ出す性格になってしまったので、ちゃんとGHCの例外について調べておこうと思います...
#飲み屋であれ程「GHCの非同期例外は安全だ」と説明したじゃないですか!