我已经为我的云计划实现了自定义写入界面。 到目前为止,我的问题是,在我完成将文件复制到我的编写器并关闭Writer之后,编写器仍然有一些写操作(通常可能有4个写操作,大约每个4096字节)。最后一次写入通常少于4096次。
这还没有发生但是我知道最后一次写入是4096字节并且我的程序不会终止的概率为1/4096。
我正在使用它来进行压缩程序,并且io.EOF无效,因为每个写入块都有一个,同时检查编写器是否关闭过早,而仍有一些写入要做。
处理这种情况的最佳方法是什么?
*** ***** EDIT 我最终实现了一个更强大的Write(),Flush()和Close()方法。现在一切都很好,如果我使用延迟Close()但如果我在最后手动调用Close()仍然会遇到同样的问题
答案 0 :(得分:0)
由于您可以完全控制作者,因此您可以使用waitgroup
在main
等待所有goroutines完成。
答案 1 :(得分:0)
通过实现更强大的Close()
函数解决了问题。我还使用defer Close()
来确保Golang在内部处理所有Goroutines。