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;
}
我找不到问题,所以我改变了设计,以便不再调用这些构造函数。
感谢那些试图帮助我的人。
扫罗