sockets - Haskell句柄的非阻塞关闭

标签 sockets haskell handle

我们有两个线程将 Handle 包裹在 Socket 中。该句柄很有用,因为它周围的MVar可确保一次只能写入一个线程。

我们要求一个线程应该能够关闭Handle,即使另一个线程正在对其进行写操作–写调用应该收到一个错误。问题在于 hclose 函数将阻塞,直到它具有独占访问权限为止。解决此问题的最佳方法是什么?

最佳答案

IIRC编写处理句柄会锁定Handle,因此您有两个选择:使用异步异常中止操作或使其变为非阻塞状态(例如,使用hPutBufNonBlocking尝试写入,并使用threadWaitWrite等待数据发送)。

关于sockets - Haskell句柄的非阻塞关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34949114/

相关文章:

jQuery Slider 如何将 handle 锁定到位?

python - _socket 文件在哪里?

c++ - std::string::iterator 的 Linux 段错误

c++ - WSARecvFrom 阻塞

haskell - 使用 getLine 和 putStr 时发生 IO 乱序

haskell - 快速排序的比较次数

Haskell "man"页面?

Haskell createProcess 并从 Handle 中读取

Matlab - "seal"一个图形,这样绘图就不会覆盖它,但会自动创建一个新图形

java - 如何使用Java套接字在不同网络之间进行通信?