问题标签 [deadlock]

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 投票
9 回答
20658 浏览

c - 服务器可以使用相同的套接字将响应发送给客户端吗?如何?

我正在使用 Berkeley 套接字(包括:Internet 域和 Unix 域),我想知道服务器是否可以使用相同的套接字来读取请求并将响应写入客户端。或者客户端应该创建另一个套接字来等待重播,服务器在处理收到的消息后连接到它。

顺便说一句,我说的是面向连接的套接字(流套接字,TCP,...)。

这是简化的服务器代码(为了简单起见,我在这里省略了对系统调用的错误检查):

这是简化的客户端代码(为了简单起见,我在这里省略了对系统调用的错误检查):

我可以connected_socket在服务器和client_socket客户端中使用来传回响应消息吗?或者我应该使用“接受”时在服务器中获得的客户端地址连接到客户端中的套接字?

我尝试在显示评论的客户端/服务器中使用读/写,但这样两个程序都被阻止,这似乎是一个死锁。

提前感谢ins!问候。

0 投票
4 回答
21189 浏览

windbg - 如何使用 windbg 从挂起转储中找到句柄所有者?

如何在windbg中找出哪个线程是我的事件句柄的所有者:

我在跑

并得到

回来,因为没有名字我还没想出如何让所有者证明我的线程正在等待哪个线程

[编辑] 我必须处理转储,因为需要在用户机器上重新启动原始进程,因此无法调试实时会话

到目前为止我发现的关于这个主题的最佳讨论是在这个博客上,但不幸的是我们最终使用了不同的锁定方法(我最终使用了 WaitForMultipleObjectsEx,描述是针对 WaitForSingleObject),而且他似乎可以访问实时进程

我的线程的堆栈跟踪(在某事上被阻塞并且我正在寻找当前所有者的线程)是:

0 投票
5 回答
4521 浏览

c# - 使用 nUnit 测试死锁

我是单元测试和 nUnit (2.48) 的新手。我想写一个测试方法,失败的情况是它死锁。这可能吗?显然,nUnit 默认情况下不知道该方法应该执行多长时间,所以我是否必须编写代码在单独的线程上完成工作,然后如果它花费的时间超过我定义的时间,则中止它并抛出异常?有一个更好的方法吗?

谢谢

0 投票
4 回答
2043 浏览

.net - WinDbg -- TraceListener 和饱和线程池

我有一个间歇性挂起的多线程 .NET Windows 服务——可能每两周 24/7 运行一次。当挂起发生时,线程池完全饱和,因为对我们自定义跟踪侦听器的调用由于某种原因开始阻塞。根据windbg,违规代码中没有任何锁,也没有任何阻塞,但它们肯定在某个地方阻塞。堆栈上也没有任何异常。在 BufferedStream.Write 代码中偶尔会遇到一个 Thread.Sleep(1),但我的问题是 ReOpenMetaDataWithMemory、CreateApplicationContext 和 DllCanUnloadNow 是什么意思?

ThreadPool 上几乎所有 2000 个挂起的工作线程(不是正常操作!)都有一个类似于以下的堆栈:

0 投票
4 回答
866 浏览

sql-server - 在负载下刷新汇总表的最佳方法是什么?

我在我的 SQL Server 2005 数据库中创建了一个表,并用汇总和计算值填充它。目的是避免在每次调用数据库时进行大量连接和分组。我希望此表每小时刷新一次,但我不确定在网站负载时执行此操作的最佳方法。如果我删除每条记录并在一个事务中重新填充表,那会成功还是会出现死锁和其他潜伏的麻烦?

0 投票
4 回答
998 浏览

sql - 用于 OLTP 的 Sql 2005 锁定 - 已提交还是未提交?

我公司聘请来解决死锁问题的 DBA 刚刚告诉我,如果我们将事务级别从 READ UNCOMMITTED 设置为 READ COMMITTED,我们的 OLTP 数据库锁定问题将会得到改善。

这不是100%错误吗?READ COMMITTED 会导致更多的锁,对吗?


更多细节:

我们的数据非常“孤立”且用户特定。99.9999999% 的用户交互都使用您自己的数据,而我们的脏读场景(如果发生)几乎不会影响用户尝试执行的操作。


感谢所有答案,有问题的 dba 最终变得无用,我们通过添加单个索引解决了锁定问题。


我很遗憾我没有指定更新语句而不是常规选择发生的锁定问题。从我的谷歌搜索来看,两种不同的查询类型在处理锁定问题时有不同的解决方案。

0 投票
7 回答
28272 浏览

c# - 检测 C# 应用程序中的死锁

可能重复:
用于查找竞争条件/死锁的 C#/.NET 分析工具

我正在调试一个我怀疑陷入僵局和挂起的应用程序。但是,这种情况每隔几天才会发生一次,而且它从未在我的计算机上发生过,因此我无法将调试器连接到它。是否有任何实用程序或方法可以用来查询正在运行的应用程序并找出哪些方法/锁/无论它是什么死锁?

更新:通常应用程序在客户位置运行,我无权访问机器,我不太愿意让他们安装大量软件。

0 投票
3 回答
1991 浏览

oracle - 使用 Rownum 时出现数据库死锁?

如果我从应用程序中的多个线程调用以下代码,是否存在死锁风险?用于为此连接到数据库的事务在此调用之前打开,并在它返回后关闭。应用程序:Java 数据库:Oracle

0 投票
2 回答
1059 浏览

c# - 线程进度到 GUI

我在我的应用程序中实现了线程来抓取网站。在所有网站都被抓取之后,我想处理它们。

表单创建 queueworker(创建 2 个工作人员并处理任务)。完成所有任务后,我想在表单线程中处理它们。在这一点上,我接受了这个

执行任务后,我触发(来自 queueworker):

并通过以下方式捕捉该事件:

问题是窗体线程被阻塞并且调用 Invoke 整个应用程序现在处于死锁状态。

如何在没有死锁的情况下对窗体线程进行更新并进行即时更新(如果工作线程完成,则会发生开始调用)

0 投票
1 回答
4750 浏览

python - 如何用python调试死锁?

我正在开发一个多线程应用程序,这是死锁。

我正在使用 Visual C++ Express 2008 来跟踪程序。一旦发生死锁,我只是暂停程序并跟踪。我发现当死锁发生时,我的 C++ 扩展中会有两个名为 python 的线程。

他们都在python代码中使用了Queue,所以我猜死锁可能是由Queue引起的。但是,一旦扩展进入 python 代码,我只能从 VC++ 调试器中看到 asm 代码和二进制文件。

我想知道暂停程序后有什么方法可以转储python代码的调用堆栈吗?我怎么知道线程中有什么锁导致了死锁?