问题标签 [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.
c# - 如何在一个静态方法中锁定类的私有静态字段,然后在其他实例方法中释放它?
我在 MVC Web 应用程序的 Controller 类中有一个私有静态字段。
我在该控制器中有一个静态方法,它为该静态字段分配了一些值,我想对该静态字段应用锁定,直到控制器中的某个其他实例方法使用存储在静态字段中的值然后释放它。
我怎样才能做到这一点 ?
细节:
我有一个名为 BaseController 的控制器,它具有如下静态 ClientId 字段和如下两种方法:-
c# - 锁定单个字典条目而不是整个字典?
假设我有一个并且想做类似以下的事情,除了我只想锁定我当前正在处理的特定字典条目而不是整个字典:static Dictionary
<string, object
>
如果不编写我自己的 Dictionary 实现,这可能吗?
谢谢,
operating-system - 如何在多核上实现锁
对于单处理器,锁定算法非常简单。
但是我们如何在多处理器/多核系统中实现此代码。如果 2 个核心/进程尝试为不同的进程提供相同的锁怎么办。
sql-server-2000 - 表锁定历史
有没有办法知道表的锁定历史?
例如,一个包含在 8:00 到 9:00 之间发生在表上的所有锁的列表。
寻找适用于 SQL Server 2000 的答案
java - 找出我的线程在 ReentrantLock 中的位置
我想知道我的线程落在了 ReentrantLock 的 LockinQueue 的哪个位置?调用 lock.lock() 时是否有一些魔法锁返回队列中的位置?或者有谁知道如何实现这一点?
提前感谢
托马斯
mysql - 我应该在 MySQL 中使用自定义的“锁”表吗?
我正在开发一个相对简单的自定义 Web 应用程序,后端有一个 MySQL MyISAM 数据库。不知何故,我想避免经典的并发覆盖问题,例如用户 A 覆盖用户 B 的编辑,因为 B 在 A 完成之前加载并提交了一些编辑表单。
这就是为什么我想以某种方式在显示编辑表单时锁定一行。然而...
- 正如我所说,我正在使用 MyISAM,据我所知,它不支持行级锁。此外,我不确定是否建议将“真正的”MySQL 锁保持几分钟。
- 我对事务知之甚少,但从我所见,看起来它们应该在一个连接中使用。
- 使用像 Git 这样的某种冲突合并系统并不是一个真正的选择。
行将保持锁定几分钟。并发性非常低:任何时候都有六个用户在使用该应用程序。
我现在正计划使用一个表格,其中包含有关哪个用户在做什么以及从什么时候开始的详细信息。然后,当其他一些用户最近打开它(例如正在处理它)时,应用程序可以决定不显示编辑表单。这个假锁将在保存表单时被删除。
这行得通吗?我应该怎么做才能避免死锁、活锁和所有这些东西?
mysql - MySQL InnoDB 锁定连接行
是否"SELECT ... FOR UPDATE"
锁定 MySQL 中的连接行?
如果是这样,是否可以禁用此行为?
文档中对此一无所知。我已经看到 Oracle 支持"SELECT ... FOR UPDATE OF table_name"
其中 table_name 是主表或受影响的行将被锁定的连接表之一,但我从未在 MySQL 的上下文中看到过这一点。
mysql - InnoDB SELECT ... FOR UPDATE 语句锁定表中的所有行
启用了 InnoDB 插件的 MySQL 服务器版本 5.1.41。我有以下三个发票表:invoices、invoice_components 和 invoice_expenses。表 invoices 具有 invoice_id 主键。invoice_components 和 invoice_expenses 都与表 invoices 相关联,其中 invoice_id 作为非唯一的 foreign_key(每张发票可以有多个组件和多个费用)。两个表都有这个外键的 BTREE 索引。
我有以下交易:
交易1
第一个事务一切正常,行被选中并锁定。
交易2
第二个事务返回ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
第三个查询。
当我尝试 SELECT ... FOR UPDATE 其他发票及其组件和费用时,也会发生同样的情况。似乎第一笔交易已锁定 invoice_expenses 表中的所有行。任何想法为什么会发生这种情况?
附加信息
事务 2 在事务 1 的第三次查询之后开始。服务器上没有其他用户、连接或事务。
该问题发生在默认的 REPEATABLE READ 事务隔离级别中。它通过更改为 READ COMMITTED 级别来修复。这是一个解决方案,但它仍然无法解释为什么问题出现在 invoice_expenses 而不是 invoice_components。
sql-server - 为什么 SQL Server 中完全空的分区上存在行锁?
我用范围左函数制作了一个分区表。然后我将一些行插入到一个分区中。结果:
结果:
然后我更新该表的一些行并查询 sys.dm_tran_locks,然后我在 partition4 上找到一些 RID 锁,如下所示:
结果如下:
当我使用dbcc page验证页面 3:13 包含的内容时,我什么也得不到:
结果如下:
因此,dbcc 页面确认页面 3:13 中没有任何内容。我的问题来了,为什么文件 3:13 上存在 RID 锁而那里什么都不存在?
c++ - 如何使用“upgrade_to_unique_lock”执行“try_lock”
我想在没有阻塞的情况下对 upgrade_lock 执行 upgrade_to_unique_lock 但粗略查看 Boost 源代码 (v1.46.1) 表明这是不可能的?我的方法错了吗?
我想首先获得一个资源的读锁,该资源也可能被其他线程持有以供读取。然后我想看看它是否可用于写入,如果没有(其他共享读锁当前持有),稍后再做。
我正在尝试异步使用中点位移算法在程序上无缝地生成地形图块(页面)。这需要使用从周围 4 个瓷砖(北、西、东、南)获得的边缘来播种主题地形图块(中心)。边缘仅从存在且已完全生成的邻居中收集。实现应该一次阻塞一个邻居块,而不是持有其他邻居的读锁,以便随时生成释放它们。生成瓦片时,它必须保证没有其他线程对其邻居有写锁,读锁是可以的。此外,不应该有一个菊花链的线程不必要地等待写锁(即距离相隔两个瓷砖的瓷砖应该能够相互独立地生成)。
我的实现依赖于第三方算法,该算法根据与相机的观看距离根据需要异步请求页面。看起来它可以任意地对页面/图块进行多达 16 个异步请求,没有特定的顺序。