-
Notifications
You must be signed in to change notification settings - Fork 4.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
socket.write failed #27
Comments
write 是非阻塞接口。 实现成阻塞的太过复杂。(需要在发送队列里做标记,并且用消息反馈) |
如果没有反馈的话,应用层会在连接断开之类的异常情况下,依然继续发送数据.这个有什么解决办法呢? |
谢谢. 已经增加了 socket.write 的返回值. 如果 fd 已关闭, 返回空. 否则返回 true . write 依旧是非阻塞的, 所以不会在连接关闭时立刻得到正确返回值. |
谢谢.另外,socket.lock,socket.unlock这个函数的主要作用是什么呢?看得不是很明白 |
lock/unlock 属于 low level api , 只在实现某些库的时候使用. 如果你不会在 coroutine 间共享 fd 的读写, 那么就不需要调用 lock/unlock. 对于库实现, 比如 redis driver 就是有必要的. 你不同的 coroutine 可能都会共享同一个 redis 的连接. 而分析 redis 数据需要多步 read 才能实现. |
明白了.谢谢. |
这返回值有什么意义? 误导用户?不过, 符合天朝人想法. 哈哈 |
目前提供了高阶库 socketchannel . 不用再直接调用 socket.write , 使用 socketchannel:request 会在连接断开后抛出 error . 发自我的 iPhone
|
socket.write失败时没有反馈给应用层,这会导致应用层在连接已经断开的情况下还继续发送数据
The text was updated successfully, but these errors were encountered: