线程和 Dropbox

Threading and Dropbox

我正在开发一个可能使用 Dropbox 作为存储的应用程序。

我的问题是,你可以在电脑之间link个文件夹,这样1个以上的人就可以upload/download to/from同一个文件夹。

我需要担心穿线问题吗?如果一个人正在下载一个文件,而另一个人正在更新同一个文件,会发生什么情况。在对文件进行一项操作时,保管箱是否会锁定文件?如果不是,我想我必须在我的应用程序中正确处理它?

当发生冲突时,dropbox 将复制文件,文件名包含日期和主机名(例如,对于 MarkoLaptop 作为主机名,2015 年 1 月 21 日作为冲突日期将生成一个名为 README.TXT (MarkoLaptop's conflicted copy 2015-01-21)), 所以如果你能在应用程序中处理它,那就太好了 <3

是的,你确实需要担心这个。

Dropbox 使用乐观并发。每个文件都有一个 rev(修订版),您可以在上传文件时参考(例如通过 /files_put)。所以基本思想是,当您下载文件时,您会跟踪 rev,当您上传文件时,您将 rev 作为 parent_rev 参数传递。如果文件同时被不同的用户(通过共享文件夹)或同一用户(通过不同的设备)更改,则 rev 将不匹配。然后会发生什么由 autorename 参数决定。如果您指定 true,文件将在发生冲突时重命名。如果您指定 false,上传将完全失败,您的应用可以决定要做什么。

本质上,您无法阻止用户同时在多个设备上更新文件,但您可以(并且应该)在您的应用中处理这些冲突,并且 rev 可以确保没有数据丢失。