克龙开发日志第2期:复制功能已完成——线程、系统调用以及一个我尚未解决的性能问题

发布日期:2026-03-23 10:01:04   浏览量 :0
发布日期:2026-03-23 10:01:04  
0

与之前的命令相比,复制功能的实现相对简单直接。各种选项——递归、强制、试运行、详细输出、跳过已存在文件、禁止覆盖、模式过滤——都顺利整合,没有遇到重大阻碍。测试过程也很干净,这次没有出现严重的漏洞。

真正的挑战在于线程模型。
最初的实现存在一个根本性缺陷:一旦工作队列为空,线程就会立即退出循环,即使其他线程仍在发现需要处理的新目录。实际上,几乎所有操作都运行在单个线程上。修复这个问题需要彻底重新思考整个方案——线程不再过早终止,而是通过条件变量和通知机制智能地等待。只有当确实没有任何任务剩余时,它们才会退出。这引入了全新一层的复杂性,但却是正确方向上的复杂性。

更大的未解决问题是处理大型目录时的性能表现。与列出内容或检查操作不同,复制无法缓存任何信息——每个文件操作都需要频繁进行系统调用,而系统调用代价高昂。文件越多,性能损失就越严重。我对某些特定场景有一些想法,但我对零散的局部解决方案不感兴趣。我希望找到一种更根本的改进方法,才算真正解决了这个问题。

--preserve 选项目前故意未实现。保留元数据意味着更多的系统调用,在尚未找到降低该开销的方法之前,将这一负担叠加到本已昂贵的操作之上是没有意义的。

克朗(Kron)仍在从虚无中构建。
github.com/TheNobelVoid/kron

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部