多线程的CPU是100%

时间:2014-06-30 13:31:50

标签: c# multithreading cpu

首先,我已经阅读了有关此问题的所有帖子,并且我已经进行了一些改进。但是,我似乎需要你的帮助:))

我有一个包含多个线程的程序,有时(并非总是)程序的CPU使用率增加到100%,并且在关闭程序之前从未减少。

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

这是代码行:

   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.Count值是3。

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

因为这是一个每次都会返回的错误,而不是在我发现问题之前我没有关闭应用程序:)

提前致谢!!

编辑: 构造函数:

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

1 个答案:

答案 0 :(得分:0)

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

感谢那些试图提供帮助的人。

沙乌尔