问题标签 [synchronisation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
73 浏览

pipeline - xProc - 暂停管道并在发生某些事件时继续它

我对 xProc 和 xPath 还很陌生,但有人要求我解决以下问题:

步骤 2 通过辅助端口从步骤 1 接收数据。步骤 2 包含一个p:for-each,它将文档保存到一个文件夹中,用于每个通过 for-each 的元素。(甲部分)

这些文档(假设我从 for-each 收到 6 个文档)位于同一目录中,并被过滤p:directory-list并最终存储在一个文档中,其中包含 for-each 创建的每个文档的完整路径。(乙部分)

到目前为止,一切都很好。

问题是 A 部分似乎太慢了。B 部分已经尝试在目录仍然为空时读取步骤 A 存储的数据。意思是,我遇到了性能/同步问题。

现在来了一个问题:是否可以让管道等待并在某个事件发生时让它继续?

这就是我的想象:步骤 B 会一直等待,直到步骤 A 存储数据的目录不再为空。我读了一些关于 的东西dbxml:breakpoint,但不幸的是,我找不到比名称和它似乎做什么的简短描述更多的信息:

设置断点,可选地基于条件,这将导致管道操作在断点处暂停,可能需要用户干预才能继续和/或发出消息。

如果您对它有更多了解并且可以举例说明它是如何使用的,那就太棒了。如果您知道解决此问题的解决方法或其他方法,这也会有所帮助。

更新:

在谷歌搜索了半天之后,我发现 SMIL 的时间表似乎可以解决问题。有没有人将 XML / xProc 和 SMIL 放在一起的经验?

0 投票
0 回答
66 浏览

mysql - MySQL 在不同系统之间通过 Dropbox 同步

我想在我的台式机、笔记本电脑和平板电脑之间同步我的 MySQL 数据库。在台式机(win 7 home basic)和笔记本电脑(win 7 starter)上运行着 wamp server 2.2 版。在平板电脑上,我使用 Android 4.2 下的 Palapa Web Server 2.1.1

我在Tech Blog - Abhishek Sachan上阅读了这篇文章,并且我已经在 httpd.conf 和 my.ini 文件中进行了所有更改。

我还安装了一个 Dropbox 文件夹,其中包含要在每台机器上同步的相同文件夹,并注意所有文件夹都具有相同的“数据”文件夹以及 MySQL 的相同文件。

到目前为止一切正常,我可以在每台设备上打开 PhpMyAdmin。我找到了相同的数据库和相同的表,其中包含我需要的所有记录。事实上,它只是一个包含三个表的小型数据库——但我想这并不重要。

但是当我在一台设备上更改记录时,Dropbox 会开始同步。但在那之后,在其他设备上看不到变化。他们仍然使用旧记录。

有人知道我的想法有什么问题吗?到目前为止非常感谢安德烈亚斯

0 投票
0 回答
98 浏览

android - 移动数据库和服务器数据库之间的同步

描述:

这是为了将服务器的数据库同步到具有离线存储的移动应用程序。数据库仅通过服务器更改,所有客户端都应相应地设置其数据。

要求:

如果将新数据添加到服务器插入操作,则应在客户端数据库中执行新数据。如果数据在服务器中更新,具有特定 id 的数据也应该在客户端数据库中更新。如果数据在服务器中被删除,该数据也应该从本地数据库中删除。

要同步的表结构...

服务器数据库的每个表中都有last_date字段和post_status。客户端在表中只有last_date字段。

每当管理员更新现有数据集last_date更改post_id保持不变。

如果管理员从数据库中删除帖子,则post_status处于开启和关闭状态,它将处于关闭状态,否则它将处于开启状态。

过程:

  1. 当客户端数据库第一次同步时,服务器数据库中的所有数据集都会按顺序下载。

  2. 当离线应用程序必须同步时,它请求服务器仅在最新的 last_date 之后向其发送数据。例如:对API 的 get 请求: getdata.php?timestamp=1234。

收到服务器响应后客户端的任务:

服务器响应将是这样的,例如:JSON 格式:

让我们假设:

第一个词典项目:待插入。

词典第 2 项:待删除。

第 3 个字典项:表示对现有帖子的修改。

现在我想知道最适合此要求的最佳同步算法是什么

问题:

  1. 客户应该如何知道更新的项目?检查从服务器返回的每个 post_id 是否已存在于本地数据库中?例如,如果在用户向服务器发送时间戳之后有 1000 条数据添加到服务器,客户端应该比较每个 id 是否存在于本地数据库中,如果在本地数据库中找到 id,则使用服务器提供的新数据更新该数据集.

  2. 如果管理员直接从数据库中删除该行而不将其状态设置为 OFF 怎么办?

0 投票
1 回答
871 浏览

python - 如何在 Python 中通过网络同步列表更改

我正在开发一个小型组管理系统,其中有两种不同类型的服务器。可以加入和离开“管理服务器”上的组的“客户端服务器”。

一个多播组中有多个管理服务器。所以客户端服务器向这个多播组发送加入和离开请求。由于 IPv6 组播不可靠,某些管理服务器可能无法接收请求。所以他们的成员名单不是最新的。

所以我需要一个可以在列表更改时用来同步列表的函数。有以下三种变化:

  • 客户端服务器离开组
  • 客户端服务器加入组
  • 客户端服务器更新其完整的成员列表(因此管理服务器替换其列表)

我想在每台管理服务器上创建一个日志列表来记录最近的更改(可能是最近 60 秒)。如果服务器注意到更改,它将通知其他管理服务器有关更改并发送带有此信息的时间。如果接收方有更新的更改,它会忽略发送方的信息。如果没有,它会更新其列表。

但这是最好的方法吗?这些东西有特殊的模式吗?或者甚至是 python 框架?

0 投票
2 回答
203 浏览

android - 如何在android中保持数据同步

案例:我在 android 中运行一个应用程序,现在我如何知道服务器数据是否已更改,因为它可以从我的网站更改。我能想到的机制是:a)我应该定期调用服务器并通过在那里维护电子标签来检查数据是否最近发生了变化b)实施推送通知并在收到推送通知时我将调用服务器进行数据更改

还有比这更多的东西吗,另一部分是哪一个是更好的方法(a,b)或两者都过时了?

0 投票
0 回答
94 浏览

java - Java swing应用与php web应用同步

我有两个应用程序 web(PHP)和桌面(swing),它们做同样的事情但使用不同的数据库,我想同步这两个应用程序,我考虑过使用触发器,我认为这是最简单的方法,如果你有其他想法/解决方案让我了解它们。

0 投票
1 回答
1029 浏览

c - 在用户空间等待完成?

在 Linux 驱动程序中同步线程时,我非常喜欢几个函数,即 : wait_for_completion()和它的对应函数complete_and_exit()

用 2 个线程实现这个 api 是否可行,共享一个内存映射,分别是内核中的写入器和用户空间中的读取器?

如果不是,那么为wait_for_completion()C 语言用户空间线程提供的工作是什么?

问候, CyrIng (Fr)

0 投票
4 回答
973 浏览

java - 同步:线程以相同的顺序执行两个关键部分

我有以下类型的代码:

每个线程首先以相同的顺序执行块 1、非同步块和块 2。

如果线程 T1 在线程 T2 之前执行 block1,那么 T1 应该在 T2 之前执行 block2。有两个以上的线程。

有没有办法在java中实现这一点?

0 投票
1 回答
52 浏览

c - C 套接字上的线程同步

我在弄清楚这一点时遇到了问题。

我有两个线程,一个执行如下(T1a,T1b,T1c)第二个(T2a,T2b,T2c)

假设 T1a 应该在 T2a 之前启动,并且 T1 和 T2 在两台远程机器上并且需要网络通信(TCP 套接字)。

如何在这两个线程之间建立同步(假设每个线程都有一个函数 T1() 和 T2() ),并且连续执行是平凡的, T1a < T2a < T1b < T2b < T1c < T2c

0 投票
1 回答
165 浏览

c - C中的进程同步第一次不执行

所以我在 C 中的进程同步程序遇到了这个问题。

我应该编写一个代码,使用fork(),将产生如下内容:

使用我在这里找到的代码,我能够让它工作,但由于某些原因,屏幕上的第一个结果是混乱的,而其他所有的工作都很好。

要编译,请键入:gcc test.c display.c -o test -pthread

无论如何,这是我正在测试的代码(我重复一遍:这不是我的代码):

这是输出:

为什么一开始会发生这种情况?