gpt4 book ai didi

ruby 非阻塞行读取

转载 作者:数据小太阳 更新时间:2023-10-29 06:54:00 24 4
gpt4 key购买 nike

我正在尝试以非阻塞方式从 io 中读取一行。

不幸的是 readline block 。我想我可以用 read_nonblock 解决这个问题,并在其中存储部分结果的附加缓冲区,检查缓冲区中是否有多行等。但是对于像这样的简单任务来说似乎有点复杂.有更好的方法吗?

注意:我正在使用事件多路分解(select)并且我对此很满意,我不想创建线程,使用 EventMachine 等...

最佳答案

我认为 read_nonblock 解决方案可能是可行的方法。简单但不是最高效的猴子补丁版本:

class IO
def readline_nonblock
rlnb_buffer = ""
while ch = self.read_nonblock(1)
rlnb_buffer << ch
if ch == "\n" then
result = rlnb_buffer
return result
end
end
end
end

如果没有数据准备好就会抛出异常,就像 read_nonblock 一样,所以你必须拯救它才能得到 nil 等。

关于ruby 非阻塞行读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9803019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com