我有一个运行很多线程的应用程序。这是我第一次尝试使用多线程应用程序并且它不使用线程池,我只是生成自己的线程。它们运行的方法无限循环。这会引起问题吗?我问的原因是我的应用似乎运行良好大约10分钟,然后几乎完全停止。任何提示赞赏。欢呼声。
编辑:我只是添加一些信息。该应用是一个帐户创建者。我希望它能够始终运行100多个线程。线程不停地运行并且不会一直被创建,它们只创建一次然后它们应该创建帐户直到我关闭程序。
答案 0 :(得分:2)
非常仔细地阅读此threading in C#,这是我认为最好的线程资源之一。建议不要旋转处理器,因为它会浪费CPU资源。最好在不需要做任何工作时阻塞线程,并在需要对信号进行操作时唤醒。
答案 1 :(得分:0)
如果你使用的是.net 4.0,你应该看一下使用任务并行库:
http://msdn.microsoft.com/en-us/library/dd460717.aspx
MS在这里做了很多艰苦的工作(线程池等),这可以帮助你避免一些常见的线程问题。
对于你自己的问题,你确定你没有锁定某些内容然后并不总是在你的循环中移除锁吗?
答案 2 :(得分:0)
技术上无限循环不会导致问题,在大多数情况下,这不是最好的设计实践。使用您的方法,您需要确保不会发生内存泄漏并正确处理对象。
答案 3 :(得分:0)
是的,如果你创建没有绑定的线程,它可能会导致很多问题。
答案 4 :(得分:0)
循环和循环..许多线程被设计为在应用程序的生命周期内无限循环。正如其他海报所解释的那样,除了旋转等待之外什么都不做的CPU循环是不必要和浪费的。执行有用工作的循环和包含阻塞调用的循环,例如。在I / O或生产者 - 消费者队列上,就好了 - 让他们为整个应用程序运行做好自己的工作。
再次使用其他海报,请查看池等。连续创建/终止/销毁线程非常昂贵且容易出错。