问题标签 [locking]

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 投票
8 回答
12697 浏览

c# - 如何在 C# 中编写条件锁?

问题是我一直在使用lock 语句来保护我的代码的关键部分,但现在,我意识到我可以允许该关键代码的并发执行,前提是满足某些条件。
有没有办法调节锁?

0 投票
12 回答
90857 浏览

c++ - C++ 中的读/写锁

我正在寻找一个好的 C++ 读/写锁。我们有一个不常写者和许多常读者的用例,并希望对此进行优化。最好我想要一个跨平台的解决方案,但是只有一个 Windows 是可以接受的。

0 投票
16 回答
174311 浏览

c# - 为什么 lock(this) {...} 不好?

MSDN文档

是“如果可以公开访问实例,则存在问题”。我想知道为什么?是因为锁的持有时间超过了必要的时间吗?还是有什么更阴险的原因?

0 投票
6 回答
6429 浏览

c# - 是否可以在 C# 中实现范围锁?

C++ 中的一个常见模式是创建一个包装锁的类——锁要么在创建对象时隐式获取,要么在之后显式获取。当对象超出范围时,dtor 会自动释放锁。是否可以在 C# 中执行此操作?据我了解,不能保证 C# 中的 dtor 何时会在对象超出范围后运行。

澄清:一般的任何锁,自旋锁,ReaderWriterLock,等等。自己调用 Dispose 违背了模式的目的——一旦我们退出作用域就释放锁——无论我们是否在中间调用 return、抛出异常或诸如此类。此外,据我了解,使用仍然只会为 GC 排队对象,而不是立即销毁它......

0 投票
5 回答
1099 浏览

sql - SQL Server 锁定在这种情况下如何工作?

考虑到我有一笔交易:

它在 2 个线程上执行,顺序为:

  1. 线程 1 - 选择
  2. 线程 2 - 选择
  3. 线程 1 - 更新
  4. 线程 2 - 更新

假设执行前Amount为0。

在这种情况下,在 SQL Server 的不同设置(未提交读取、已提交读取、可重复读取、可序列化)下会发生什么情况,最后会发生什么数量,会不会出现死锁?

0 投票
3 回答
3953 浏览

.net - How do I copy a file or folder that is locked under windows programmatically?

What are the API calls to copy a file that is currently locked. I'm hoping to be able to use .Net, but Win32 calls would be fine as well.

Please feel free to chime in about the same functionality on Unix, or any other OS.

0 投票
8 回答
14066 浏览

mysql - mysql插入竞争条件

如何在 MySQL 中停止竞争条件?手头的问题是由一个简单的算法引起的:

  1. 从表中选择一行
  2. 如果不存在,则插入

然后要么你得到一个重复的行,要么你通过唯一/主键阻止它,一个错误。

现在通常我认为事务在这里有帮助,但由于该行不存在,事务实际上并没有帮助(或者我错过了什么?)。

LOCK TABLE 听起来有点矫枉过正,尤其是在表每秒更新多次的情况下。

我能想到的唯一其他解决方案是 GET_LOCK() 用于每个不同的 id,但没有更好的方法吗?这里也没有可扩展性问题吗?而且,对每个表都这样做听起来有点不自然,因为对我来说这听起来像是高并发数据库中非常常见的问题。

0 投票
6 回答
17418 浏览

python - 为什么使用全局解释器锁?

Python的全局解释器锁的作用究竟是什么?编译为字节码的其他语言是否采用类似的机制?

0 投票
1 回答
5270 浏览

windows - 在锁定或解锁 Windows XP 时运行脚本

我有一台 Windows XP 机器和一台运行 Ubuntu 的 Linux 机器。我通过Synergy从 Windows 机器共享键盘/鼠标。我想做的是在我锁定/解锁 Windows 机器时锁定/解锁 Linux 机器。

所以我希望能够在 Windows 锁定或解锁屏幕时运行一些描述的脚本。

0 投票
7 回答
8906 浏览

database - Django中的原子操作?

我正在尝试为计数器实现(我认为是)一个非常简单的数据模型:

当有人通过时,它会查找与 visitType 和 visitDate 匹配的行;如果该行不存在,它将使用 counter=0 创建。

然后我们增加计数器并保存。

我担心的是,这个过程完全是一场竞赛。两个请求可以同时检查实体是否存在,并且它们都可以创建它。在读取计数器和保存结果之间,可能会出现另一个请求并增加它(导致计数丢失)。

到目前为止,我还没有真正找到解决这个问题的好方法,无论是在 Django 文档中还是在教程中(事实上,看起来教程的投票部分有一个竞争条件)。

我如何安全地做到这一点?