问题标签 [locks]

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 回答
9254 浏览

mysql - 如何在 MySQL 中锁定行以供选择

一个程序会从一个表中选择几条记录并更新每一行,而它可以执行多次,这将导致多个进程同时完成同一个任务。

如何防止两个不同的进程更新表中的同一行。也就是说,如何保证每个进程可以选择不同的记录呢?MySQL 中的行选择级别是否有任何锁?或者在这种情况下,有没有更好的方案来防止单行多次更新?

0 投票
3 回答
128 浏览

c - c线程和资源锁定

我有一个二维数组和 8 个并发线程写入该数组。如果每个线程读取/写入不同的数组,会导致段错误吗?

例如:

这样可以吗?我知道这是伪代码,但你明白了。

0 投票
1 回答
153 浏览

java - 最好的并发锁:一次 WRITE 和无限次 READ

Java中是否有任何Lock可以让我这样做?

  • 一次 WRITE 操作
  • 无限数量的 READ操作(即使获得了 WRITE 锁)
  • 可选但很棒:锁超时 - 一段时间后释放锁以避免永远死锁
0 投票
1 回答
356 浏览

sql - 合并复制是否锁定订阅者数据库?

我需要在 2 个数据库之间配置合并复制。这些数据库具有外键完整性,这使得复制不起作用,所以我求助于:

  1. 删除订阅者数据库上的所有 FK,
  2. 复制和
  3. 重新创建 FK。

然而,这会使订阅者数据库容易受到 FK 违规的影响。


所以我的问题是:

  1. 复制是否会锁定订阅者数据库、引发事务并在此过程中以任何方式使数据库无法使用?
  2. 如果没有,我可以通过 TSQL 手动启动这样的锁吗?
  3. 如果以上都不可能,我有什么遗漏吗?
0 投票
0 回答
68 浏览

multithreading - Simulating database access rules with pthreads, locks

For a hypothetical database, there are three operations: Search, Append, Modify

Search: can run concurrently with any number of other search operations

Append: database can only run ONE append operation at a time along with any number of searches

Modify: database should be locked from all other search, append and modify operations.

So far this is what I have down as pseudo-code. Will I have any problems with deadlock even though I lock and unlock things in the same order? The problem I have is that the modify operation does not have exclusive access to the database. Could this be solved with a semaphore with one flag?

I don't need help implementing it into a programming language. I just want to figure out the right placement of locks, unlocks and maybe semaphores so that the rules above are satisfied.

0 投票
5 回答
14976 浏览

java - 解锁另一个线程java拥有的锁

我有一个 LockManager 管理多个线程的锁。有时线程是坏孩子,我不得不杀死它们并要求 LockManager 释放它们所有的锁。但是,由于我在 java 中使用 ReentrantLock 这是不可能的,我无法解锁另一个线程拥有的锁。

我被迫使用锁(不能使用信号量,这是作业的重点)。是否有任何 Java Lock 实现允许我解锁其他线程拥有的锁?

到目前为止,我考虑的选项是:

  • 以允许我这样做的方式重新实现 ReentrantLock
  • 在信号量和可重入锁之间进行某种映射

您可能会发现有用的额外资源:

0 投票
1 回答
96 浏览

c# - 在 C# 中正确使用线程的方法

我在设计代码的工作方式时遇到了一些困难:

  1. 序列号 #1(随时接收数据)调用Routine()如果某个特定的接收值A > constant1,但仅当Routine()未运行时,否则只有最后一次调用将在Routine()结束后运行
  2. Serial #2(随时接收数据)将接收到的数据设置为BC
  3. Routine()检查是否C > constant2并将BC保存到文件中
  4. 计时器(每 N 秒)运行另一个例程,检查保存的文件并发送电子邮件(在保存BC时不干扰Routine()

我当前的设计使用了几个全局布尔值,但我认为这会产生一些问题(由于布尔值在检查它和再次设置它以启动“锁定”过程之间发生变化)。

那么,解决此类同步问题的推荐方法是什么?锁定(someGlobalObject)?,使用监视器?(我如何丢弃多个挂起的routine() 调用?),互斥量?,信号量?

谢谢!

0 投票
0 回答
763 浏览

python - 使用 python 多处理进行锁定/管理器封装

以下简化示例失败,并出现名为的异常

示例代码:

我想知道如何在 Inserter 类中封装管理器和锁定语义(即,无需将锁定对象显式传递给可调用函数)?

0 投票
1 回答
3847 浏览

python - Python:我可以使用类变量作为线程锁吗?

我正在考虑使用类变量作为线程锁,因为我不喜欢在全局变量中定义锁并且也想防止死锁。这真的有效吗?例子:

考虑到我不会A.lock在类内部或外部的某个地方重新分配变量,我的假设是它被视为与全局锁相同?它是否正确?

0 投票
3 回答
95 浏览

sql - 锁定表以进行更多事务

我正在使用 Oracle 11g。

我正在尝试通过索引重建实现并发加载到表中的场景。我有几个流程试图实现这种情况:1. 从源加载数据,2. 转换数据,3. 关闭 DWH 表上的索引,4. 将数据加载到 DWH,5. 在 DWH 表上重建索引。我关闭并重建索引以获得更好的性能,在某些情况下,一个流程正在重建索引,而另一个流程试图将其关闭。我需要做的是在第 2 点和第 3 点之间放置一些锁,这将在第 5 点之后释放。

Oracle 内置的LOCK TABLE机制是不够的,因为锁是在事务结束时释放的,所以任何ALTER语句都会释放锁。

问题是如何解决问题?