CPU是100%的多线程

本文关键字:多线程 100% CPU | 更新日期: 2023-09-27 18:10:45

首先,我阅读了这里所有关于这个问题的帖子,我设法取得了一点进展。然而,我似乎确实需要你的帮助:)

我有一个有几个线程的程序,有时(不总是)程序的CPU占用率增加到100%,直到我关闭程序才减少。

正如我在其他类似的帖子中看到的,我使用visual studio (2012 - Ultimate)运行应用程序。我暂停了应用程序,打开线程窗口。在那里我暂停线程,直到我找到卡住应用程序的4个线程。它们都指向同一行代码(调用构造函数)。我检查了构造函数的内部和外部,没有找到任何可能导致它的循环。为了更加小心,我几乎在每一行代码中都添加了断点,并恢复了应用程序。

这是一行代码:

   public static void GenerateDefacementSensors(ICrawlerManager cm)
    {
        m_SensorsMap = new Dictionary<DefacementSensorType, DefacementSensor>();
        // Create instance of all sensors
        // For any new defacement sensor, don't forget to add an appropriate line here
        // m_SensorsMap.add(DefacementSensorType.[Type], new [Type]Sensor())
        try
        {
            if (m_SensorsMap.Count <= 0)
            {
                m_SensorsMap.Add(DefacementSensorType.BackgroundSensor, new BackgroundSensor());
                m_SensorsMap.Add(DefacementSensorType.TaglinesSensor, new TaglinesSensor(cm.Database));
                m_SensorsMap.Add(DefacementSensorType.SingleImageSensor, new SingleImageSensor());
            }
        }
        catch (Exception)
        {
            Console.WriteLine("There was a problem initializing defacement sensors");
        }

    }

第二个"m_SensorsMap。"Add"是用绿色箭头标记的,在我的理解中,这意味着它还在等待第一行完成。

顺便说一下,m_SensorsMap。计数值为3

我怎样才能找到问题?它是一个循环吗?或者死锁(没有意义,因为它不应该是100%的cpu,对吧?)上传代码是没有意义的,因为这是一个巨大的项目。我需要更多的一般帮助,如如何调试?除了循环,还有什么别的吗?

因为这是一个每隔一段时间返回的错误,然后我没有关闭应用程序,直到我发现问题:)

提前感谢!!

编辑:构造函数:

     public TaglinesSensor(IDatabase db)
    {
        m_DB = db;
    }

CPU是100%的多线程

我找不到问题,所以我改变了设计,以便不再调用这些构造函数。

感谢那些试图帮助我的人。

扫罗