线程和Dropbox

时间:2015-06-13 15:36:28

标签: multithreading dropbox

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

我的问题是,您可以在计算机之间链接文件夹,这样一个以上的人就可以上传/下载到同一个文件夹中。

我是否需要担心线程?如果当某人正在下载文件时,另一个人正在更新同一文件,会发生什么。当一个操作正在进行时,Dropbox会锁定文件吗?如果没有,我想我必须在我的申请中处理它吗?

2 个答案:

答案 0 :(得分:3)

是的,你必须为此担心。

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

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

答案 1 :(得分:0)

当发生冲突时,dropbox将制作文件的副本,文件名包含日期和主机名(例如,对于MarkoLaptop作为主机名,冲突日期为2015年1月21日将生成名为{{1}的文件}),所以如果你可以在应用程序中处理它,那就太棒了< 3