我需要文件访问权限,以便同时从不同的线程读取和写入相同的ZIP存档。
每个线程在归档中都有自己的子目录,因此不存在冲突,但我认为操作系统并不关心它。
对于ZIP操作,我使用libzip。我该如何进行访问?我需要照顾一些特别的东西吗?
我可以在应用程序启动时解压缩归档文件并在退出时压缩它,但我更喜欢直接操作归档文件,这就是我问这个问题的原因。
答案 0 :(得分:1)
并行解包不应该那么困难,但打包文件肯定是非常重要的/
不幸的是,如果使用ZIP格式,目录的名称并不重要 - 文件存储位置的标题只是一个路径和文件名为一个块的结构,并且不存在不同的目录在zip文件中。
数据并不好,因为每个文件的数据只是作为一个连续的数据流存储在前一个文件之后,而是存储在下一个文件之前。
当然可以制作压缩数据准备的zip-archive功能,一旦数据完成,分配的空间和添加到目录中的标题 - 这些都在某种锁定下,然后是数据可以在没有锁的情况下写入实际文件[虽然我不确定如何在不使用锁的情况下写入文件中的不同位置]。
(在维基百科here中有很好的描述,但如果你没有研究过这些东西,不同数据结构的后果会变得多么可能并不完全清楚)