如何跨网络互斥?

2023-11-23

我有一个在网络上运行的桌面应用程序,每个实例都连接到同一个数据库。

那么,在这种情况下,如何实现在连接到同一数据库的所有正在运行的实例上工作的互斥体?

换句话说,我不希望两个以上实例同时运行相同的函数。如果一个实例已经在运行该函数,则其他实例不应访问它。


PS:数据库事务无法解决,因为我不想互斥的函数不使用数据库。我提到数据库只是因为它可用于在运行的实例之间交换信息。

PS2:该功能大约需要 30 分钟才能完成,因此如果第二个实例尝试运行相同的功能,我想显示一条很好的消息,表明它现在无法执行,因为计算机“X”已经在运行该功能。

PS3:该函数必须在客户端计算机上处​​理,所以我不能使用存储过程。


我认为您正在寻找数据库事务。事务会将您的更改与所有其他客户端隔离。

更新: 您提到该函数当前不写入数据库。如果你想互斥这个函数,就必须有一些中心位置来存储当前的互斥持有者。数据库可以解决这个问题——只需添加一个包含当前持有者计算机名的新表即可。在开始您的功能之前检查该表。

我认为你的问题可能很混乱。互斥锁应该是为了保护资源。如果您的函数不访问数据库,那么您要保护什么共享资源?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何跨网络互斥? 的相关文章

  • 验证假名输入

    我正在开发一个允许用户输入日语字符的应用程序 我试图想出一种方法来确定用户的输入是否是日语假名 平假名 片假名或汉字 应用程序中的某些字段不适合输入拉丁文文本 我需要一种方法将某些字段限制为仅限汉字或仅限片假名等 该项目使用UTF 8编码
  • 将应用程序的时间与外部服务器的时间同步的最佳方法是什么?

    我正在考虑将系统的本地时间更改为服务器的时间 然后使用它 但我打赌还有其他方法可以做到这一点 我一直试图在 C 中找到类似时钟的东西 但找不到任何东西 我正在接收日期时间格式的服务器时间 编辑 我需要在服务器工作的同时使用我的应用程序 我只
  • Apache ZooKeeper:写入如何工作

    Apache ZooKeeper 是一种针对小对象的高可用数据存储 ZooKeeper 集群由一些节点组成 这些节点都将整个数据集保存在内存中 该数据集被称为 始终一致 因此每个节点每次都有相同的数据 根据文档和博客文章 http www
  • 防止 WNetAddConnection2 类允许被禁止的用户访问共享文件夹

    我开发了 C windows 应用程序 操作系统是Windows 7 要求 是使用带有凭据的代码访问网络共享文件夹 Test WNetAddConnection2 class 限制 是某些用户可以访问此共享文件夹 测试 但对于其他用户 设置
  • 从库中捕获主线程 SynchronizationContext 或 Dispatcher

    我有一个 C 库 希望能够将工作发送 发布到 主 ui 线程 如果存在 该库可供以下人员使用 一个winforms应用程序 本机应用程序 带 UI 控制台应用程序 没有 UI 在库中 我想在初始化期间捕获一些东西 Synchronizati
  • 主线程如何在该线程之前运行?

    我有以下代码 public class Derived implements Runnable private int num public synchronized void setA int num try Thread sleep 1
  • 在java中实现你自己的阻塞队列

    我知道这个问题之前已经被问过并回答过很多次了 但我只是无法根据互联网上找到的示例找出窍门 例如this http tutorials jenkov com java concurrency blocking queues html or t
  • 如何使用Python多处理创建同步对象?

    我无法弄清楚如何创建同步的 Python 对象 我有一个名为 Observation 的类和一个名为 Variable 的类 基本上看起来像这样 代码被简化以显示本质 class Observation def init self date
  • HttpSession 内的同步是否可行?

    UPDATE 问题后立即解决 问题 通常 同步是在 JVM 内序列化并行请求 例如 private static final Object LOCK new Object public void doSomething synchroniz
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad
  • 将 Docker 容器连接到本地主机的最简单方法

    我想知道是否可以从 Docker 容器连接到本地主机上的应用程序 我运行两个 Docker 容器 它们通过以下方式相互连接link选项 但是如何将其中一个容器连接到本地主机呢 是的 使用docker run network containe
  • 如何高效计算连续数的数字积?

    我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
  • http://localhost:8080 未重定向到 opensso 登录页面

    我的 Liferay Tomcat 服务器在端口 8080 上运行 当我尝试通过输入 url 从服务器访问应用程序时http localhost 8080 它没有重定向到登录页面 而是给我错误 The Connection to abc x
  • 我可以关闭并重新打开套接字吗?

    我学习了一个使用套接字的例子 在此示例中 客户端向服务器发送请求以打开套接字 然后服务器 侦听特定端口 打开套接字 一切都很好 套接字从双方 客户端和服务器 打开 但我仍然不清楚这个东西有多灵活 例如 客户端是否可以关闭一个打开的 从两端
  • C++ 类的互斥成员导致编译错误

    我不确定为什么当我向 myClass 添加互斥体成员时会发生这种情况 在本例中为 mu Error C2661 std tuple lt void thiscall MyNameSpace myClass void MyNameSpace
  • Android SyncAdapter 回调

    我已经按照 SDK 中的 SimpleSyncAdapter 示例项目的思路实现了 SyncAdapter AccountManager 和私有 ContentProvider 一切都运转良好 现在 当从远程服务器下载了设置了特定标志的新行
  • 如何发布/销售/推广半商业/开源项目? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我已经开发了一个 PHP 框架 总共花了大约 3 周的时间 但它已经准备好发布了 如果我选择这样做的话 在目前的经济形势下 我不能仅仅接受
  • 网络:传输层和网络层之间的区别

    在互联网模型中有四层 链路 gt 网络 gt 传输 gt 应用 我真的不知道网络层和传输层之间的区别 正如我读到的 Transport layer include congestion control flow control reliab
  • 如何为所有语言创建字母数字正则表达式?

    我今天遇到了这个问题 此正则表达式仅匹配英语 a zA Z0 9 如果我需要支持这个世界上的任何语言 我应该编写什么正则表达式 如果您使用字符类简写和 Unicode 识别正则表达式引擎 您就可以做到这一点 这 wclass 匹配 单词字符
  • 使用 kryo 注册课程的策略

    我最近发现了 kryonet 库 它非常棒并且非常适合我的需求 然而 我遇到的一个问题是制定一种好的策略来注册所有可以转移的类 我知道我可以在每个对象中编写一个静态方法 该方法将返回它使用的所有类的列表 但我真的不想这样做 为了我自己的时间

随机推荐