问题标签 [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.
java - 我应该同步侦听器通知吗?
我总是很犹豫是否公开我的锁,公开它们。我总是试图将锁限制在我的实现中。我相信,不这样做会导致僵局。
我有以下课程:
当 SomeClass 想要通知他的听众时,你会这样做:
或者
我会选择第二个选项。缺点是侦听器可以获取事件,即使它们已经未注册。好处是,侦听器回调正在等待的线程在想要取消注册侦听器时不会陷入死锁。我相信好处比坏处更重要,坏处可以很容易地记录下来。
所以这里的问题基本上是:你会暴露你的锁吗?
我的问题不是您是否会选择普通的 ArrayList、LinkedList、ConcurrentLinkedQueue、CopyOnWriteArrayList、...!您是否会介意监听器是否可以在未注册时收到通知。关键是你是否会把锁打开。这是关于避免或不避免死锁。
请分享你的想法。谢谢!
sql-server - 我如何为这个 SQL 获得正确的锁?
我的数据库是 SQL Server 2005/8。在预订系统中,我们对一个活动的预订限制为 24 个。存储过程中的此代码检查: - 当前用户 (@UserId) 尚未预订事件 (@EventsID) - 当前事件的当前预订列表低于 24 - 插入新预订。
问题是它不安全。两个用户可能同时执行测试并得出结论他们都可以预订。两者都插入一行,我们最终得到 25 个预订。
简单地将其包含在事务中是行不通的。我尝试将 WITH (UPDLOCK) 添加到选择中,希望其中一个会获取更新锁并将另一个锁在外面。那是行不通的。
java - 我如何在 ReentrantReadWriteLock ReadLock 和 WriteLock 上创建包装器
我有一个ReentrantReadWriteLock
. 包含ReadLockReentrantReadWriteLock
和 WriteLock 作为子类。
然后我必须能够做类似下面的事情
或者
是否有可能实现这一目标。
mysql - 使用连接时的 MySQL 锁定
在 2 表连接查询中选择“FOR UPDATE”时,我对 mysql/innodb 锁定有疑问。例子:
2 表 - items
, queue
. queue.id
是与 items.id(外键)的 1:1 连接。queue.status
是带索引的枚举。queue 的行数很少,而 items 表相对较大。
- 表中选定的行会被排
items
他锁定吗? - 还获得了哪些其他锁?(显然,
queue
表中所有具有 stats='new' 的行除外)。 - 是否有任何可能导致死锁的共享锁。我在某处读过 insert 将下一个键共享锁放在自动增量索引上,然后在使用
SELECT ... FOR UPDATE
(在同一个事务中)锁时将其升级为独占,很容易发生死锁 - 2 个线程可以获得共享锁,然后他们都将等待对方释放锁以获得排他锁。在这种情况下是否可能(也听说外键使共享锁)。
java - java类中的锁
假设我们有下一个示例代码:
问题是:
假设对于在此代码部分上运行的某个线程正在退出 while 循环的条件并且 lock1 可用,那么线程是否有可能检查循环的条件但仍然不会获得锁?
还是在这种情况下保证如果检查条件,线程将获得锁?
java - JAVA多线程中的同步和对象锁
假设一个线程正在运行同步方法,因此获得了对象实例的锁。还假设线程从运行状态进入可运行状态。那么该对象锁会发生什么。它是在线程进入可运行状态之前释放的吗?请帮我一个正确的答案:)。
在此先感谢,马亨德拉雷迪。
java - Java Locks 同步方法烘焙传输
您好,我有一个 Java 应用程序,它需要输入数量的操作来执行,并且它为每个操作运行不同的线程:
现在我需要对账户进行并发转账,其中 Bank 类的定义如下:
当程序执行操作时:
我收到了一系列类似此消息的错误:
你觉得同步好吗?
有什么建议么?非常感谢
更新(我无法回答自己)
主循环中存在概念错误(对于 i..to n_operations),函数正在传递“int id = i;” 作为source_account的参数,而n_operation数大于数组的最大值,所以编译器合理地说:ArrayIndexOutOfBoundsException。
作为最后的贡献,我请您检查同步是否正确完成,因为我不是多线程专家。再次感谢,很抱歉今天早上提出的问题很糟糕......
sql-server - 我是否需要 SQL Server 中的此并发更新方案的事务/锁
我想知道在以下情况下我是否真的需要事务/锁。我可以执行 3 个可能在任意数量中并发的操作(即我可以运行两个任务 1 和三个任务 2):
任务1:
任务 2:
任务 3:
我应该如何实现上述内容以确保我永远不会破坏 table_2 的字段counter
?
非常感谢你!
c++ - 当 cond 为真时,在以下情况下,锁会发生什么?
我有这个代码,考虑到 cond 是真的,现在任何人都可以回答在以下情况下锁会发生什么: -
谢谢
c++ - 在 Windows 上的 c++ 中使用和在 wxwdigets 中创建线程
我正在阅读与在 Windows 上使用 c++ 中的 wxwidgets 进行线程创建相关的内容,但是我无法理解以下代码片段的含义:-
以下内容是该项目的一部分:-
谢谢