首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么需要多次调用zumero_sync?

为什么需要多次调用zumero_sync?
EN

Stack Overflow用户
提问于 2013-07-14 12:13:46
回答 1查看 243关注 0票数 5

根据zumero_sync的文档

如果需要从服务器中提取大量信息,则可能需要多次调用此函数。

在我的安卓应用程序中,如果使用Zumero,那就没问题了;我一直调用zumero_sync,直到返回值不以"0;"开始。

但是,现在我正在尝试编写一个管理脚本,它也与我的服务器dbfile同步。我希望使用sqlite3 shell,并让脚本通过命令行参数来执行。我需要在循环中调用zumero_sync ( SQLite不支持),以确保数据库完全同步。如果有必要,我可以在一个循环中调用sqlite3 (读取它的输出,查找"0;"),甚至编写一个C++应用程序来本地调用SQLite/Zumero函数。但是,如果一个zumero_sync就足够了,肯定会更容易一些。

我想我真正的问题是:是否可以更改zumero_sync,以便在返回之前完成同步?如果存在一些现有行为更有用的情况,那么可能会有一个参数来指定使用哪种模式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-14 14:58:15

我在这里看到两个基本问题:

(1)为什么zumero_sync()的工作方式是这样的?

(2)它能否有不同的工作方式?

我将首先回答(2),因为它更容易:是的,它可以不同的工作方式。相反,我们可以(而且可能很快就会提到这一点)实现一个额外的函数,名为zumero_sync_complete(),它在循环中执行zumero_sync()的内核,并在同步完成后返回。

我们没有实现zumero_sync_complete(),因为它并没有增加太多的价值。这是一个简单的循环,所以你可以自己写。:-)

呃,除了不支持循环的脚本环境。就像sqlite3壳。

对(1)的答复:

Zumero同步协议的设计是为了使服务器能够灵活地返回部分结果,如果它想这样做的话。而且,为了减少服务器上的负载(并提高其可伸缩性),它经常想要做到这一点。

考虑到这一点,向客户机公开这一点的原因之一就是增加了客户端的灵活性。只要我们进行多次往返,我们就可以给客户一个机会,在它们之间做一些事情(比如,更新进度条)。

客户端在循环迭代之间可能要做的另一件事是处理错误。

或者,对于多线程客户端,它可能希望处理同步过程中在客户机上发生的更改。

这就产生了如何管理锁定的问题?在整个循环过程中,我们是否持有sqlite写锁?或者只有在绝对必要的时候?

一句话:一个健壮的应用程序可能希望实现循环本身,这样它就可以做出自己的决定,并保持对事物的完全控制。

但是,正如您所观察到的,sqlite3外壳没有循环。这不是一个应用程序。而且它没有线。或者进度条。因此,这是一个用例,在这个用例中,一种功能更简单、功能不太强大的zumero_sync()形式是有意义的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17639269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档