【问题标题】:Non-blocking close of Haskell HandleHaskell Handle 的非阻塞关闭
【发布时间】:2016-01-22 14:31:57
【问题描述】:

我们有两个线程写入 Handle 包装 Socket。 Handle 很有用,因为它周围的 MVar 确保一次只能有一个线程对其进行写入。

我们要求其中一个线程应该能够关闭句柄,即使另一个线程正在写入它——对 write 的调用应该收到一个错误。问题是hclose 函数会阻塞,直到它具有独占访问权。解决此问题的最佳方法是什么?

【问题讨论】:

    标签: sockets haskell handle


    【解决方案1】:

    IIRC 写入来处理锁定 Handle,因此您有两个选择:使用异步异常中止操作或使其成为非阻塞(例如,使用 hPutBufNonBlocking 尝试写入,使用 threadWaitWrite 等待发送数据) .

    【讨论】:

      猜你喜欢
      • 2014-02-17
      • 2020-09-15
      • 2015-06-18
      • 2011-03-20
      • 2010-12-30
      • 1970-01-01
      • 2010-11-17
      • 2012-05-26
      • 2014-07-24
      相关资源
      最近更新 更多