问题标签 [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.
debugging - 为什么 !locks 不为我工作?
我正在使用 windbg(MSDN 下载页面提供的最新版本)。
我正在尝试调试我的应用程序中的死锁,并且 !locks 将非常有用。但是,它不起作用:
我不知道它为什么不高兴。我已经正确加载了符号:
NTSD 同意:
堆栈看起来不错:
任何帮助表示赞赏。
javascript - Javascript 和渲染暂停并在 android 浏览器中滚动时保持暂停
我发现了一些与滚动和渲染以及 javascript 相关的奇怪行为。
如何实现:
在任何足够长的网页上滚动。开始快速滚动(翻页)。然后松开触摸。现在,由于动量,页面仍在滚动。点击屏幕停止滚动。
这使浏览器进入一个奇怪的模式。
在 nexus 上,它的行为如下:屏幕上显示的内容的更新停止,您仍然可以单击链接并转到它们应该到达的位置,但屏幕上显示的内容保持不变。
如果您然后稍微滚动屏幕,屏幕的更新将再次启动,并且会显示您一直希望看到的内容。
在我尝试过的所有带有 HTC Sense 的手机上(Hero、Desire、Legend)都会发生这种情况:
屏幕的更新就像在 nexus 上一样停止,但任何 javascript 的执行也停止了。如果您单击将您带到另一个页面的链接,但事情会再次恢复正常。
我测试这个的方法是我创建了一个这样的页面:
changeColor 函数只是将“容器”的背景颜色更改为几种不同的颜色。
因此,在错误发生之前,当您单击任何链接时,颜色会发生变化。
错误发生后:
Nexus 1:当您点击链接时,什么也没有发生(除了“橙色链接选择圆角框的东西”显示为好像链接被点击)。然后当你滚动升位时。您可以看到颜色发生了变化(与我单击链接的次数相同)。
On Sense:链接将我带到 google.com
有没有其他人注意到这个问题?有没有办法解决它?
谢谢。
sql-server - 监控锁
我们使用 Livelink 进行记录管理,如果用户移动一个丢失子文件夹的文件夹,它会锁定数据库并减慢整个系统的速度。尽管向用户发送了许多警告,但这种情况仍在发生。是否有任何分类或监控工具可以为我们提供有关何时发生锁定的预警系统?
如果不是,我将使用什么代码来显示锁并显示导致锁的用户名?
谢谢
windows - OS Loaderlock 的工作原理
我试图更详细地了解操作系统加载程序锁是如何与 Windows 中 DLL 的加载和卸载相关的。
我知道当创建/销毁新线程和/或加载/卸载新 DLL 时,每个加载的 DLL 都会收到通知。
那么这是否意味着 DllMain 函数在锁内运行,并且在它运行时没有其他线程可以访问它,如果您要在该函数中创建另一个线程,您可以挂起进程甚至操作系统?
我的理解正确吗?
有什么文章可以解释这一点吗?
c++ - 通过组合向类添加锁
我正在用 C++ 编写线程安全的类。它的所有公共方法都使用锁(非递归自旋锁). 私有方法是无锁的。所以,一切都应该没问题:用户调用公共方法,它锁定对象,然后通过私有方法完成工作。但是当一个公共方法调用另一个公共方法时,我得到了死锁。我读过递归互斥锁很糟糕,因为很难调试它们。所以我使用 C 的 stdio 方式:公共方法 Foo() 只锁定对象并调用 Foo_nolock() 来完成整个工作。但我不喜欢这些 _nolock() 方法。我认为它复制了我的代码。所以我有了一个想法:我将创建无锁类 BarNoLock,以及只有一个成员的线程安全类 Bar:BarNoLock 的一个实例。并且所有 Bar 的方法只会锁定这个成员并调用它的方法。这是一个好主意还是有一些更好的模式/实践?谢谢。更新:我知道 pimpl 和 bridge。
php - 锁定 PHP 以实现关键部分 - MySQL 的意外结果
目标是拥有一个 PHP 脚本,其中包含特定部分的代码,一次只能由一个线程/进程执行。
一些限制:
- 我的系统上没有信号量
- 手册中提到在多线程服务器中不能依赖flock(),所以flock() 被淘汰了。(证实了这一点)
所以认为有可能(为什么不呢?)使用 MySQL 进行同步,但我得到了意想不到的结果。
为了测试,我用脚本 test.php 打开了两个浏览器选项卡
表格是:
我转到第一个浏览器选项卡并访问脚本。我等待 5 秒钟,转到另一个选项卡并访问脚本,以便两个脚本并行运行。我希望第一个选项卡等待,第二个选项卡应该在第一个查询后退出。但是,两个选项卡都在 sleep() 行上等待。这意味着第一个查询总是返回 'NOT_RUNNING' 。
一些奇怪的事情:
- 当我重复上述实验时,我在 FireFox 中运行两个选项卡,然后在第三种不同的浏览器类型中运行,比如 Chrome,然后它就可以工作了!(睡眠时状态设置为 RUNNING ,当状态为 RUNNING 时脚本提前退出)
- 当我使用两个不同的命令行窗口重复上述实验并从命令行运行脚本时,它可以工作了!
- 我在等待时检查 phpMyAdmin,状态得到正确更新。
我已经尝试了一切,锁定表、事务、SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED、SET autocommit=1;,但结果始终相同。
有谁知道这里发生了什么?这个问题有什么好的解决方案吗?
测试系统: - Win、MySQL 5.0、php 5.3 - Linux、MySQL 5.0.91-community-log、php 5.2.12
我完全被困在这里,谢谢你看!
更新:
感谢您提交答案 - 我仍然无法解决此问题。这是建议的带有 GET_LOCK() 和 session_write_close() 的代码:我还尝试了行级锁定、事务和不同的隔离级别。或许做不到?
c# - C# 多线程
好的。我想让两个线程运行。当前代码:
两者都在访问同一个列表,问题是我猜第一个线程“foo”没有释放锁;因为“bar”仅在“foo”完成时才开始。谢谢
python - Python & Multiprocessing,将集合生成分解为子进程
我必须根据其他字符串的一些计算生成一组字符串。这需要相当长的时间,而且我正在开发一个多处理器/多核服务器,所以我认为我可以将这些任务分解成块并将它们传递给不同的进程。
首先,我将第一个字符串列表分解为每个 10000 个块,将其发送到创建新集合的进程,然后尝试获取锁并将这些报告回主进程。但是,我的主进程集是空的!
这是一些代码:
奇怪的是 a) 主进程上的 self.feature_labels 是空的,但是当从每个子进程调用它时,它有项目。我认为我在这里采取了错误的方法(这就是我过去在 Java 中的做法!)。有更好的方法吗?
提前致谢。
sql - 如何在未提交的删除中读取数据?
MS SQL 2008 过程删除然后插入数据。我需要能够在另一个连接中读取数据,直到插入发生,即删除之后。我怎样才能做到这一点?
c - 在 C 中与系统调用同步
我正在做一些奇怪的事情,但我希望它完全同步。所以我想请你帮忙。我有以下内容:
这是相当抽象的,而不是 echo 我正在执行一个给我输出的软件,所以执行时间是不可预测的,但顺序是一样的。我想要一个 printf 然后是系统调用,然后是 printf ,这样它们就可以对齐了
我的名字是 syntax_Error 我 17 岁\n
我在没有锁的情况下尝试了这个命令,但它不起作用,这很明显,或者如果它确实起作用,有时它是不可预测的。我是同步结构的新手,所以我想听听您的意见。
干杯!=)