我们有两个线程写入Handle
包裹Socket
。 Handle很有用,因为它周围的MVar确保只有一个线程可以一次写入它。
我们要求其中一个线程应该能够关闭Handle,即使另一个线程正在写入它 - 写入的调用应该会收到错误。问题是hclose
函数会阻塞,直到它具有独占访问权限。解决这个问题的最佳方法是什么?
答案 0 :(得分:1)
IIRC写入处理锁定Handle
,因此您有两个选择:使用异步异常中止操作或使其无阻塞(例如,使用hPutBufNonBlocking
尝试写入,threadWaitWrite
等待要发送的数据。)