4

作業中の Haskell プログラムをテスト実行すると、このエラーが stdout に出力されます。プログラムの同一の実行で、常にではなく、時々発生します。

forkOS_entry: interrupted

mask_ $ forkIOプログラムには、別のスレッドを開始するために呼び出す行があります。エラーはそのスレッドから来ていると思います。より良いエラー メッセージを表示したり、何らかの方法でこのエラー メッセージを抑制したりする方法はありますか? 何が起こっている?プログラムは問題なく動作するようです。

_ <- mask_ $ forkIO $ mapSSL cafilePath (icSSLWrapPort c) (icHostname c) (icPort c)

4

1 に答える 1

1

関連する機能についてasyncパッケージを確認します。async パッケージに出くわした後、テストに使用する関数の方が信頼性が高いことがわかりました。具体的には、この場合に役立つ機能は次のとおりです。

waitCatch :: Async a -> IO (Either SomeException a)

Marlowの書籍は、同時実行パッケージを理解するための優れたリファレンスです。参考になれば幸いです。私がテストできる小さなサンプル コードを貼り付けていただければ、テスト済みのコードを投稿できるかもしれません。

于 2014-03-10T02:43:16.267 に答える