问题标签 [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.
mysql - 如何在 MySQL 中锁定行以供选择
一个程序会从一个表中选择几条记录并更新每一行,而它可以执行多次,这将导致多个进程同时完成同一个任务。
如何防止两个不同的进程更新表中的同一行。也就是说,如何保证每个进程可以选择不同的记录呢?MySQL 中的行选择级别是否有任何锁?或者在这种情况下,有没有更好的方案来防止单行多次更新?
c - c线程和资源锁定
我有一个二维数组和 8 个并发线程写入该数组。如果每个线程读取/写入不同的数组,会导致段错误吗?
例如:
这样可以吗?我知道这是伪代码,但你明白了。
java - 最好的并发锁:一次 WRITE 和无限次 READ
Java中是否有任何Lock可以让我这样做?
- 一次 WRITE 操作
- 无限数量的 READ操作(即使获得了 WRITE 锁)
- 可选但很棒:锁超时 - 一段时间后释放锁以避免永远死锁
sql - 合并复制是否锁定订阅者数据库?
我需要在 2 个数据库之间配置合并复制。这些数据库具有外键完整性,这使得复制不起作用,所以我求助于:
- 删除订阅者数据库上的所有 FK,
- 复制和
- 重新创建 FK。
然而,这会使订阅者数据库容易受到 FK 违规的影响。
所以我的问题是:
- 复制是否会锁定订阅者数据库、引发事务并在此过程中以任何方式使数据库无法使用?
- 如果没有,我可以通过 TSQL 手动启动这样的锁吗?
- 如果以上都不可能,我有什么遗漏吗?
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.
java - 解锁另一个线程java拥有的锁
我有一个 LockManager 管理多个线程的锁。有时线程是坏孩子,我不得不杀死它们并要求 LockManager 释放它们所有的锁。但是,由于我在 java 中使用 ReentrantLock 这是不可能的,我无法解锁另一个线程拥有的锁。
我被迫使用锁(不能使用信号量,这是作业的重点)。是否有任何 Java Lock 实现允许我解锁其他线程拥有的锁?
到目前为止,我考虑的选项是:
- 以允许我这样做的方式重新实现 ReentrantLock
- 在信号量和可重入锁之间进行某种映射
您可能会发现有用的额外资源:
c# - 在 C# 中正确使用线程的方法
我在设计代码的工作方式时遇到了一些困难:
- 序列号 #1(随时接收数据)调用Routine()如果某个特定的接收值A > constant1,但仅当Routine()未运行时,否则只有最后一次调用将在Routine()结束后运行
- Serial #2(随时接收数据)将接收到的数据设置为B和C
- Routine()检查是否C > constant2并将B和C保存到文件中
- 计时器(每 N 秒)运行另一个例程,检查保存的文件并发送电子邮件(在保存B和C时不干扰Routine())
我当前的设计使用了几个全局布尔值,但我认为这会产生一些问题(由于布尔值在检查它和再次设置它以启动“锁定”过程之间发生变化)。
那么,解决此类同步问题的推荐方法是什么?锁定(someGlobalObject)?,使用监视器?(我如何丢弃多个挂起的routine() 调用?),互斥量?,信号量?
谢谢!
python - 使用 python 多处理进行锁定/管理器封装
以下简化示例失败,并出现名为的异常
示例代码:
我想知道如何在 Inserter 类中封装管理器和锁定语义(即,无需将锁定对象显式传递给可调用函数)?
python - Python:我可以使用类变量作为线程锁吗?
我正在考虑使用类变量作为线程锁,因为我不喜欢在全局变量中定义锁并且也想防止死锁。这真的有效吗?例子:
考虑到我不会A.lock
在类内部或外部的某个地方重新分配变量,我的假设是它被视为与全局锁相同?它是否正确?
sql - 锁定表以进行更多事务
我正在使用 Oracle 11g。
我正在尝试通过索引重建实现并发加载到表中的场景。我有几个流程试图实现这种情况:1. 从源加载数据,2. 转换数据,3. 关闭 DWH 表上的索引,4. 将数据加载到 DWH,5. 在 DWH 表上重建索引。我关闭并重建索引以获得更好的性能,在某些情况下,一个流程正在重建索引,而另一个流程试图将其关闭。我需要做的是在第 2 点和第 3 点之间放置一些锁,这将在第 5 点之后释放。
Oracle 内置的LOCK TABLE
机制是不够的,因为锁是在事务结束时释放的,所以任何ALTER
语句都会释放锁。
问题是如何解决问题?