在通过 FFI 使用 C 库的晶体程序中,我有从文件描述符读取时阻塞的代码。在该文件描述符有一些数据之前,我如何才能产生光纤?
例如,当前代码类似于:
f = File.open("/some/socket/or/pipe/like/object")
Iterator.of do
data = Pointer(LibFoo::Data).malloc
# yield_until_fd_has_data f.fd
LibFoo.read f.fd, data
data.value
end
WhereLibFoo.read
阻塞,直到 socket/pipe-like 对象有一些数据。我用什么代替yield_until_fd_has_data
?