我需要文件访问权限才能同时从不同线程读取和写入相同的 ZIP 存档。
每个线程在存档中都有自己的子目录,因此不会发生冲突,但我认为操作系统并不关心这一点。
对于 ZIP 操作,我使用 libzip。如何执行访问?我必须照顾一些特别的东西吗?
我可以在应用程序启动时解压缩存档并在退出时将其压缩,但我更愿意直接对存档进行操作,这就是我问这个问题的原因。
我需要文件访问权限才能同时从不同线程读取和写入相同的 ZIP 存档。
每个线程在存档中都有自己的子目录,因此不会发生冲突,但我认为操作系统并不关心这一点。
对于 ZIP 操作,我使用 libzip。如何执行访问?我必须照顾一些特别的东西吗?
我可以在应用程序启动时解压缩存档并在退出时将其压缩,但我更愿意直接对存档进行操作,这就是我问这个问题的原因。
并行解包应该没那么难,但是打包文件肯定不简单/
不幸的是,如果您使用 ZIP 格式,目录的名称并不重要 - 文件存储位置的标题只是一个结构,路径和文件名是一个整体,并且 zip 中不存在不同的目录-文件。
数据并不好,因为每个文件的数据只是作为一个连续的数据流存储在前一个文件之后和下一个文件之前。
一个人当然可以在准备压缩数据的地方创建一个 zip-archive 功能,一旦数据完成,分配空间并将标题添加到目录 - 这两者都处于某种锁定状态,然后数据可以在没有锁的情况下写入实际文件[尽管我不确定在不使用锁的情况下写入文件中的不同位置效果如何]。
(这里的维基百科对此进行了很好的描述,但是如果您没有研究过这些东西,可能并不完全清楚不同数据结构的后果是什么)