标签: synchronisation

同步异步任务的最佳方法

我的问题:我已经将802.15.4无线网络连接到串口(使用包装器).我可以将包发送到网络并监听传入的包.你可以想象这是高度异步的.

执行任务:我想将命令发送到网络并等待一个函数调用中的响应.例如:我想从节点获取网络ID为1338的温度.

double getTemperature(int id) throws Exception { .... }
Run Code Online (Sandbox Code Playgroud)

除了执行所有这些"同步(对象)等待(...)通知(..)"之外​​,还有更好的方法来等待响应消息吗?

最好的问候,bigbohne

也许添加一些香料:

这应该都以Web界面结束,用户可以通过ajax或直接请求这些命令.我还想过在数据库中缓存响应值.但是对于某些命令,你MUSS可以直接回答成功/失败

java multithreading synchronisation

12
推荐指数
1
解决办法
1万
查看次数

如何跨两个服务器同步Git存储库

我正在寻找一种在(2)服务器之间自动同步Git存储库的方法,以便它们可以从第三点进行互换.

情况如下:我们对所有项目大量使用git,并且一些存储库的大小增长很快.目前我们有一个中央服务器,每个人都在推/拉这个/从这个.然而,这一切都通过互联网连接,因此不是最快的方式.

想法:将另一台服务器放在办公室,并将所有git存储库放在那里供办公室使用.该服务器需要与在线服务器同步.用户甚至不会通过某些dns调整知道他们使用哪一个,因此当连接到那里的网络时,在线服务器存储库的地址解析为办公室内的一个.

有没有人在那里做类似的事情?或者是否有更简单的方法来完成目标.

git repository-design synchronisation

9
推荐指数
1
解决办法
3038
查看次数

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

我有以下类型的代码:

synchronized block1 {
    //only one thread in the block
}

{lot of code where synchronization not necessary}

synchronized block2 {
    //only one thread in the block. 
    //All the threads that executed block1 before this thread should have already executed this block.
}
Run Code Online (Sandbox Code Playgroud)

每个线程首先以相同的顺序执行block1,non synchronized block和block2.

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

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

java concurrency multithreading semaphore synchronisation

8
推荐指数
1
解决办法
712
查看次数

定期后台同步

我对iOS编程很新,现在想要实现定期后台同步,以便将我的服务器数据与客户端数据同步.我想要实现的是与Androids相当的SyncAdapter,您可以在其中定义时间间隔(例如每30分钟),系统将在后台自动触发定义的任务.

到目前为止,我找不到Swift 3.0的这种机制,所以我需要问一下somone是否有经验或一些暗示我如何实现这一目标.

我想做的事听起来很简单:

当应用程序首次启动时,应用程序应设置同步管理器,该管理器每30分钟自动触发一次后台任务.后台任务负责同步服务器和客户端数据(使用Alamofire).

我怎样才能做到这一点?

background-process synchronisation ios swift3

7
推荐指数
1
解决办法
6131
查看次数

三元运算符和C中的序列点

我的表达式如下所示: -

while (count)
{
...
...

    index = ((count == 20)? 0 : index++);
...
...
}
Run Code Online (Sandbox Code Playgroud)

现在三元运算符是C中的序列点,但我相信序列点在测试部分结束.

这种理解是否正确,因此这种说法会导致未定义的行为?

c ternary sequence-points synchronisation

6
推荐指数
1
解决办法
924
查看次数

PHP会话同步

我正在用PHP开发WebApp.用户可以单击一个按钮,PHP代码最终将调用系统执行程序.由于WebApp将使用AJAX,因此用户可能会单击该按钮两次,或者确实单击另一个将启动另一个exec进程的按钮.

现在,我知道我可以写一个小的javascript来禁用按钮,直到单个事件完成.但是,这是客户端强制执行,很容易被覆盖.

我可以在PHP方面做些什么来阻止这样的事情发生吗?在我的头上,我有一个会话变量起到"信号灯",并执行每个脚本之前,这个变量将被检查的一个想法,必须返回0之前,脚本可以继续.

我是否采取正确的方式?或者这只会为死锁/竞争条件打开一堆蠕虫?

谢谢

更新:为了将其置于上下文中,我正在开发的系统将用于启动,停止和重新映像虚拟专用服务器.如果按下了重新映像按钮,PHP脚本将调用一些bash脚本开始重新映像VPS.但是,如果用户在完成此操作时尝试启动VPS ....

javascript php ajax synchronisation

5
推荐指数
1
解决办法
283
查看次数

.net 中的数据同步设计

我有一个现有的基于云的解决方案,它带有一个 web api,可以将数据从后端 SQL 数据库传输到客户端应用程序。都非常标准。我的 web api 是使用 .NET Core 构建的。这运行良好,我将现有的 web api 与已构建的各种 web 客户端一起使用。架构如下所示:

当前解决方案 当前的解决方案需要扩展以支持使用 web api 的本地移动客户端应用程序(这里没有什么特别之处 - 通常他们会像任何其他客户端一样调用 web api)但是我必须满足这些新的要求客户端应用程序可用于离线场景。这意味着我不能期望设备上存在数据连接以便每次需要时调用我的 web api。我需要查看同步数据,以便它可以离线并在需要时发送回服务器。

想一想,数据将通过以下两种方式之一进行同步:

  • 单向同步 - 从服务器到客户端的数据,但不会对此数据进行更改,例如系统查找表。
  • 双向同步 - 现有数据将同步到客户端,修改并发送回服务器或在客户端上创建新数据并向上发送,例如新订单。

新架构如下:

在此处输入图片说明

所以 - 开始我的问题 - 有没有人知道在同步数据(单向和双向)或可能有内置同步代码的 NuGet 包方面遵循的良好设计模式?如果可能的话,我试图避免在同步方面重新发明轮子。

注意:仅供参考,本机移动应用程序将在 Visual Studio 2015 中使用 Xamarin 构建。

c# synchronisation data-synchronization xamarin asp.net-core

5
推荐指数
1
解决办法
1468
查看次数

许多人在单线程中调用静态方法

请看这个类,静态方法调用和输出.

public class OneThreadManyStaticCalls {

public static final Calculator calculator = new Calculator();
    public static void main(String[] args) {
        dummy(0, 1, 1);
        dummy(0, 2, 2);
        dummy(0, 3, 5);
        dummy(0, 4, 44);
        dummy(0, 5, 5);
    }

    public static void dummy(int a, int b, int expected) {

        System.out.print(System.currentTimeMillis() + "\t");
        if (calculator.add(a, b) == expected) {
            System.out.println("OK");
        } else {
            System.err.println("NOK");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到了不同的(来自System.out.print的命令)运行该程序的输出.例:

   NOK
   NOK
   1342527389506    OK
   1342527389506    OK
   1342527389506    1342527389506   1342527389506   OK
Run Code Online (Sandbox Code Playgroud)

你们有没有人(详细说明)为什么解释我?提前致谢.sznury

java static synchronisation

4
推荐指数
1
解决办法
130
查看次数

C++多线程问题 - 是唯一的互斥方式吗?

我有一个计数器变量,将由多个线程访问,这将增加/减少它.它不应该同时由多个线程更新.

我知道您可以创建一个互斥对象,必须在有问题的变量可以更改之前获取该互斥对象.在这种情况下,一个关键部分是不合适的,因为有多个函数可以改变有问题的变量.

还有另一个我可以不使用互斥锁吗?使用互斥锁确实会降低性能(请参阅http://www.codeguru.com/forum/showthread.php?t=333192).我相信在Java中,你可以在变量声明中使用一个关键词来实现它(它被称为"同步"吗?),但在C++中是否有这样的东西?

我知道volatile不是我要找的关键字.

非常感谢你.

c++ java multithreading synchronization synchronisation

2
推荐指数
1
解决办法
1519
查看次数

Python线程同步

我有3个任务:t1,t2和t3.我想在两个并行线程中运行t1和t2.我想在运行t3之前等待t1和t2执行结束.

t1 =========> |
t2 ====> |
t3 ...................... | =======>
------------------ -------------------------------------------(时间) - >

我有一些关于线程同步的基础,但我无法找到如何管理这种情况.在python库中是否有任何内置解决方案我是否必须编写自己的(基于信号量的?)解决方案?

python multithreading synchronisation

2
推荐指数
1
解决办法
288
查看次数

用于增量的同步原语

我是一个研究线程的初学者,我有一个功课来解决os161的互斥问题,通过启动几个递增公共计数器的线程从0到10000计数.我不知道如何使用同步原语来改进它,请帮忙.

#include <types.h>
#include <lib.h>
#include <test.h>
#include <thread.h>
#include <synch.h>

enum {
    NADDERS = 10,    /* the number of adder threads */
    NADDS   = 10000, /* the number of overall increments to perform */
};

/*
 * **********************************************************************
 * Declare the counter variable that all the adder() threads increment 
 *
 * Declaring it "volatile" instructs the compiler to always (re)read the
 * variable from memory and not optimise by removing memory references
 * and re-using the content of a …
Run Code Online (Sandbox Code Playgroud)

c multithreading synchronisation os161

1
推荐指数
1
解决办法
570
查看次数