标签: deadlock

C#中的线程死锁示例

有人能给出一个如何在C#语言中引起线程死锁的例子吗?

c# deadlock

25
推荐指数
2
解决办法
2万
查看次数

如何在Spring中重启死锁/锁定超时的事务?

在使用Spring(特别是Spring推荐的方法:声明式事务)时,在死锁或锁定超时异常时实现事务重启的最佳实践是什么?

谢谢,

阿萨夫

java spring deadlock annotations transactions

23
推荐指数
3
解决办法
1万
查看次数

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

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

我正在调试一个应用程序,我怀疑它正在陷入僵局并挂起.但是,这只会每隔几天发生一次,并且它永远不会发生在我的计算机上,因此我无法将调试器挂钩.是否有任何实用程序或方法可以用来查询正在运行的应用程序,并找出哪些方法/锁定/它是什么死锁?

更新:通常,应用程序在客户位置运行,我无法访问该计算机,并且我不太愿意让他们安装大量软件.

c# multithreading deadlock

22
推荐指数
3
解决办法
2万
查看次数

需要避免子进程死锁而不进行通信

我需要执行一个产生大量输出的命令,并且需要花费大量时间来执行(> 30分钟).我正在考虑使用subprocess.Popen来做到这一点.我需要捕获命令的输出,所以我将PIPE传递给stdout和stderr.

使用Popen.wait()时的死锁问题已在很多论坛上得到充分记录,因此Popen.communicate()是避免死锁的建议方法.该解决方案的问题是communication()阻塞直到命令完成.我需要在执行命令时打印到达stdout的所有内容.如果20分钟后没有输出,脚本执行将被终止.

以下是我需要遵守的一些约束:

  • 我的Python版本是2.4.2,我无法升级.
  • 如果解决方案仍然使用子进程,我需要将subprocess.PIPE传递给所有std句柄以避免此错误:http://bugs.python.org/issue1124861

有办法吗?

python deadlock subprocess stdout pipe

22
推荐指数
2
解决办法
8761
查看次数

INSERT操作会导致死锁吗?

假设:

  • 我正在使用REPEATABLE_READ或SERIALIZABLE事务隔离(每次访问行时都会保留锁)
  • 我们正在谈论多个线程同时访问多个表.

我有以下问题:

  1. 操作是否可能INSERT导致死锁?如果是这样,请提供一个详细的场景,演示如何发生死锁(例如,线程1执行此操作,线程2执行此操作,...,死锁).
  2. 对于奖励积分:为所有其他操作回答相同的问题(例如,SELECT,UPDATE,DELETE).

更新:3.对于超级奖励积分:如何在以下场景中避免死锁?

给定表格:

  • 权限[id BIGINT PRIMARY KEY]
  • 公司[id BIGINT PRIMARY KEY, name VARCHAR(30), permission_id BIGINT NOT NULL, FOREIGN KEY (permission_id) REFERENCES permissions(id))

我按如下方式创建了一家新公司:

  • INSERT INTO权限; - 插入permissions.id = 100
  • INSERT INTO公司(name,permission_id)VALUES('Nintendo',100); - 插入companies.id = 200

我删除公司如下:

  • SELECT permission_id FROM公司WHERE id = 200; - 返回permission_id = 100
  • DELETE FROM公司WHERE id = 200;
  • DELETE FROM权限WHERE id = 100;

在上面的示例中,INSERT锁定顺序是[permissions,companies],而DELETE锁定顺序是[companies,permissions].有没有办法解决这个例子REPEATABLE_READSERIALIZABLE隔离?

sql deadlock insert

22
推荐指数
2
解决办法
3万
查看次数

"锁定|通信缓冲资源"是什么意思?

我有一个报告死锁的错误日志:

事务(进程ID 55)在锁定时死锁 与另一个进程通信缓冲资源并被选为死锁牺牲品.重新运行该交易.

我试图重现此错误,但我的标准死锁SQL代码产生一个不同的错误:

事务(进程ID 54)在锁资源上与另一个进程发生死锁,并被选为死锁牺牲品.重新运行该交易.

我想非常清楚,我不是在问什么是僵局.我完全理解基础知识.

我的问题是:lock | communication buffer resources在这种情况下的含义是什么?什么是"通信缓冲资源"?这lock |意味着什么吗?

我最好的猜测是当并行线程结合其结果时使用通信缓冲区.任何人都可以确认或否认这个吗?

我的最终目标是以某种方式触发第一个错误再次发生.

sql-server deadlock sql-server-2008 database-deadlocks

22
推荐指数
2
解决办法
2万
查看次数

将共享升级到独占锁时避免MySQL死锁

我正在使用MySQL 5.5.我注意到在并发场景中发生了一个特殊的死锁,我不认为应该发生这种死锁.

使用两个同时运行的mysql客户端会话重现:

mysql会话1:

create table parent (id int(11) primary key);
insert into parent values (1);
create table child (id int(11) primary key, parent_id int(11), foreign key (parent_id) references parent(id));

begin;
insert into child (id, parent_id) values (10, 1);
-- this will create shared lock on parent(1)
Run Code Online (Sandbox Code Playgroud)

mysql session 2:

begin;
-- try and get exclusive lock on parent row
select id from parent where id = 1 for update;
-- this will block because of shared lock …
Run Code Online (Sandbox Code Playgroud)

mysql sql deadlock

22
推荐指数
1
解决办法
1820
查看次数

死锁 - 在这个例子中它是如何发生的?

谁能解释一下:

  1. 为什么我们陷入僵局?
  2. Gaston怎么能在Alphonse退出之前进入功能弓?(它应该从函数返回bowBack()以退出函数bow()- 或)?

这是我得到的输出 - 然后程序卡住了!

阿方斯:加斯顿向我鞠躬致敬!

加斯顿:阿尔方斯向我鞠躬致敬!

public class Deadlock {
    static class Friend {
        private final String name;
        public Friend(String name) {
            this.name = name;
        }
        public String getName() {
            return this.name;
        }
        public synchronized void bow(Friend bower) {
            System.out.format("%s: %s"
                + "  has bowed to me!%n", 
                this.name, bower.getName());
            bower.bowBack(this);
        }
        public synchronized void bowBack(Friend bower) {
            System.out.format("%s: %s"
                + " has bowed back to me!%n",
                this.name, bower.getName());
        }
    }

    public static void …
Run Code Online (Sandbox Code Playgroud)

java multithreading deadlock synchronized

22
推荐指数
4
解决办法
3455
查看次数

如何在C#中使用ADO获得高效的Sql Server死锁处理?

我有一个类'数据库',作为ADO.net的包装器.例如,当我需要执行一个过程时,我调用Database.ExecuteProcedure(procedureName,parametersAndItsValues).

我们遇到了SQL Server 2000中死锁情况的严重问题.我们团队的一部分正在处理sql代码和事务以最小化这些事件,但我正在考虑使这个数据库类能够抵御死锁情况.

我们希望死锁受害者可能在经过一段时间的延迟后重试,但我不知道是否可能.这是我们使用的方法的代码:

public int ExecuteQuery(string query)
{
    int rows = 0;

    try
    {
        Command.Connection = Connection;
        Command.CommandType = CommandType.Text;

        if(DatabaseType != enumDatabaseType.ORACLE)
          Command.CommandText = query;
        else
          Command.CommandText ="BEGIN " +  query + " END;";



        if (DatabaseType != enumDatabaseType.SQLCOMPACT)
            Command.CommandTimeout = Connection.ConnectionTimeout;

        if (Connection.State == ConnectionState.Closed)
            Connection.Open();

        rows = Command.ExecuteNonQuery();
    }
    catch (Exception exp)
    {
        //Could I add here any code to handle it?
        throw new Exception(exp.Message);
    }
    finally
    {
        if (Command.Transaction == null)
        {
            Connection.Close();
            _connection.Dispose();
            _connection …
Run Code Online (Sandbox Code Playgroud)

c# sql-server ado.net deadlock .net-2.0

21
推荐指数
3
解决办法
3万
查看次数

扔:所有的goroutines都睡着了 - 僵局

给出以下简单的Go程序

package main

import (
    "fmt"
)

func total(ch chan int) {
    res := 0
    for iter := range ch {
        res += iter
    }
    ch <- res
}

func main() {
    ch := make(chan int)
    go total(ch)
    ch <- 1
    ch <- 2
    ch <- 3
    fmt.Println("Total is ", <-ch)
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有人可以告诉我为什么我得到

throw: all goroutines are asleep - deadlock!
Run Code Online (Sandbox Code Playgroud)

谢谢

multithreading deadlock channel go

21
推荐指数
1
解决办法
1万
查看次数