栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用多个线程写入文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用多个线程写入文件

共享资源==争用

根据定义写入普通文件是序列化操作。通过尝试从多个线程进行写入无法获得任何性能,I / O是有限的有限资源,其带宽甚至比最慢或最重载的CPU还要小几个数量级。

并发访问共享资源可能很复杂(并且速度很慢)

如果您有多个线程正在执行昂贵的计算,那么您可以选择,如果您只是因为考虑到要加快某些速度而仅使用多个线程,那么您将采取相反的做法。I /
O争用总是会减慢对资源的访问,而由于锁等待和其他开销,它永远不会加快对资源的访问。

您必须有一个受保护的关键部分,并且一次只允许一个编写者。只需查找任何支持并发的日志记录编写器的源代码,您就会看到只有一个线程可以写入文件。

如果您的应用程序主要是:

  1. CPU绑定: 您可以使用某种锁定机制/数据构造,一次只允许多个线程中的一个线程写入文件,从并发的角度来看,这是天真的解决方案;如果这些线程受CPU约束,但I / O很少,则可能会起作用。

  2. I / O绑定: 这是最常见的情况,您必须使用带有某种队列的消息传递系统,并将所有线程发布到队列/缓冲区,并从中提取单个线程并写入文件。这将是最具扩展性和最容易实现的解决方案。

日记-异步写入

如果您需要创建一个单个的超大文件,而该文件的写入顺序并不重要,并且该程序受CPU限制,则可以使用日记技术。

让每个

process
文件都写入一个单独的文件,然后将多个文件最后合并为一个大文件。这是一个非常古老的 低技术含量的
解决方案,效果很好,并且已经使用了数十年。

显然,您拥有的存储I / O越多,它将在最终连接上执行得越好。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446574.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号