问题标签 [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.
ios - ios允许特定数量的线程同时使用一个方法
我明白那个
可以防止多个线程同时访问您的方法。因此,在使用 @synchronized{} 时,任何人都无法访问其中的内容。
我以某种方式只允许有限数量的线程,例如只允许 2 个线程或 3 个线程同时访问该方法。
PS:我有一个发送同步请求的方法,我想限制一次最多发送3个同步请求
sql - Microsoft SQL Server 多重锁
我目前正在运行 Microsoft SQL Express Server。当一个用户执行查询而不提交它时,它会锁定整个表。问题是恶意用户可能会故意“破坏”数据库。我怎样才能防止这种情况发生?
hibernate - JBoss arjuna TransactionReaper 不会在超时时回滚
我正在使用访问 oracle 数据库的应用程序。有时,该数据库上的对象(行)被我的应用程序外部的进程锁定。
我遇到的问题是,当事务达到事务超时时,arjuna 协调器尝试回滚事务但没有成功
堆栈跟踪如下
我正在使用 jboss-5.1.0.GA、Hibernate 3.3.1.GA 和 Oracle 9.2.08。
我已经做了几个测试,当行被锁定时,回滚不起作用。自事务超时以来经过的时间无关紧要。如果我在事务超时后解锁该行,则回滚从那一刻开始。
我在网上做了一些研究,但没有发现完全相同的错误。
谢谢。
迭戈。
python - Python中混合多处理和线程的现状
关于问题 6721,在 Linux 中的同一 python 应用程序中使用多处理和用户线程的最佳实践或解决方法是什么,python 标准库中的锁应该在 fork 上进行清理?
为什么我两者都需要?我使用子进程进行繁重的计算,产生的数据结构结果太大而无法通过队列返回——而是必须立即将它们存储到磁盘。让这些子进程中的每一个由一个单独的线程监控似乎很有效,这样当完成时,线程可以处理将大(例如,多 GB)数据读回需要结果以进行进一步计算的进程的 IO结合其他子进程的结果。子进程会间歇性地挂起,我刚刚(经过多次头部撞击)发现这是使用日志模块“引起”的。其他人在这里记录了这个问题:
https://twiki.cern.ch/twiki/bin/view/Main/PythonLoggingThreadingMultiprocessingIntermixedStudy
这指向了这个显然未解决的python问题:python标准库中的锁应该在fork上进行清理; http://bugs.python.org/issue6721
我对追踪这件事的困难感到震惊,我回答说:
带有对“小心”的相当无益的建议和指向上述内容的链接。
但是冗长的讨论:问题 6721 表明在同一应用程序中同时使用多处理(或 os.fork)和用户线程是一个“错误”。由于我对这个问题的理解有限,我在讨论中发现太多分歧,无法得出在同一应用程序中同时使用多处理和线程的解决方法或策略是什么。我的直接问题通过禁用日志记录得到了解决,但是我在父进程和子进程中创建了少量其他(显式)锁,并且怀疑我正在为进一步的间歇性死锁做好准备。
你能给出实用的建议来避免在 python (2.7,3.2,3.3) 应用程序中使用线程和多处理时使用锁和/或日志模块时出现死锁吗?
java - Tomcat线程等待并锁定相同的资源
考虑以下 Java\Tomcat 线程转储:
这是一个僵局吗?似乎同一个资源 ( 0x00002ab5565fe358
) 都是locked
和waited on
- 这是什么意思?
mutex - 为什么删除锁会减少 Helgrind 中的错误?
我正在做我的第一个并行编程任务,并且对我在整个互斥锁情况下所做的事情知之甚少。
我正在尝试使用 Helgrind 在我的代码中定位竞争条件,当我在我认为应该在的位置锁定时,Helgrind 返回一个惊人的 7300 错误!但是,删除关键部分中的一些锁实际上会将我的错误减少到 6000,尽管我知道这是一个需要锁的区域。
这可能是什么原因造成的?也许作为一般性陈述,有人可以给我一个很好的参考资料,为新手解释互斥锁吗?谢谢!
concurrency - 锁/条件变量问题
所以在我正在编写的程序中,我有三个函数,为了简单起见,我们称它们为 A、B 和 C。每个函数都需要访问资源 X 才能工作。
限制是A和B不允许同时运行,必须适当同步。但是,允许 C 与 A 或 B 同时运行。
这给我带来了一些问题。
首先,我尝试在 A 和 B 上加锁,因此当调用 A 时,它会获取 X 的锁,然后释放它,与 B 相同。这样 A 和 B 顺序运行。但是,如果我以这种方式使用锁,C 将无法与 A 或 B 同时运行。
所以我尝试使用条件变量,如果 B 正在运行,A 必须等待来自 B 的信号,而 B 必须等待来自 A 的信号,但是这种相互依赖的调用似乎也不起作用。
不知道该怎么办。
multithreading - 多个线程但只允许使用一个方法
所以基本上我所处的情况是我有一堆线程,每个线程在一周内都在做不同的计算。在一周结束时,每个线程调用函数 X() 然后开始计算下一周并重复此循环。
但是,只允许一个线程实际执行方法 X() 中的操作,并且只有当所有线程都到达方法 X() 时。此外,在使用方法 X() 的一个线程完成之前,没有一个线程可以继续前进。
所以我很难实现这一点。我觉得我需要使用条件变量,但我仍然对线程和诸如此类的东西感到不安。
.net - 以编程方式监视文件上的 Windows #locks,如 compmgmt.msc 中所示
我们目前遇到的问题是,有太多用户试图通过使用文件锁的旧程序访问单个文件。
我正在尝试编写一个将在服务器上运行并监视此特定文件(平面文件数据库)的 dotnet 程序是否可行。每当客户端尝试访问此文件并且它被另一个用户锁定时 - 我想向他们发送一条消息,告诉他们谁正在访问该文件,以便他们可以惹恼那个人而不是我。
当我打开 compmgmt.msc 时,我可以看到文件、文件锁和锁定它的用户,所以我知道这些信息是可以访问的。但是我似乎找不到可以获取此信息的 dotnet 类(#locks,已锁定它的用户)。
有人知道可以在这里帮助我的课程吗?
java - 在 Java 中跨类共享条件和锁定变量
我想编写一个程序,其中两个单独的线程运行两个对象,一个线程等待执行其代码,直到另一个线程发出信号。
现在要做到这一点,我想使用Condition
界面。
我无法弄清楚在我的代码中声明lock
和condition
变量的位置,以便两个类都可以访问它。
我想问的是,线程如何共享lock
和condition
变量,以确保它们在相同条件下发出信号和等待。