与之前的命令相比,复制功能的实现相对简单直接。各种选项——递归、强制、试运行、详细输出、跳过已存在文件、禁止覆盖、模式过滤——都顺利整合,没有遇到重大阻碍。测试过程也很干净,这次没有出现严重的漏洞。
真正的挑战在于线程模型。
最初的实现存在一个根本性缺陷:一旦工作队列为空,线程就会立即退出循环,即使其他线程仍在发现需要处理的新目录。实际上,几乎所有操作都运行在单个线程上。修复这个问题需要彻底重新思考整个方案——线程不再过早终止,而是通过条件变量和通知机制智能地等待。只有当确实没有任何任务剩余时,它们才会退出。这引入了全新一层的复杂性,但却是正确方向上的复杂性。
更大的未解决问题是处理大型目录时的性能表现。与列出内容或检查操作不同,复制无法缓存任何信息——每个文件操作都需要频繁进行系统调用,而系统调用代价高昂。文件越多,性能损失就越严重。我对某些特定场景有一些想法,但我对零散的局部解决方案不感兴趣。我希望找到一种更根本的改进方法,才算真正解决了这个问题。
--preserve 选项目前故意未实现。保留元数据意味着更多的系统调用,在尚未找到降低该开销的方法之前,将这一负担叠加到本已昂贵的操作之上是没有意义的。
克朗(Kron)仍在从虚无中构建。
github.com/TheNobelVoid/kron
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。