繁体   English   中英

如何避免在双核处理器中运行单个应用程序2次

[英]How to avoid running single application 2 times in dual core processor

我在线程中创建了小型应用程序,当我在单核中运行该应用程序时,它可以完美运行。

多核(双核)中的同一应用程序以不同的PID号运行两次。 使用和不使用for循环的结果都是相同的。

请帮助避免两次运行应用程序。 这是一段代码

for (int i = 0; i < System.Environment.ProcessorCount; i++)
{
    Thread thCurrent = new Thread(sampleMethod);                        
     thCurrent.Start();
     thSubThreads.Add(thCurrent);
} 

我假设您需要在主要活动开始时启动两个线程,但是在程序挂起时这些线程也将保持运行状态,并且每当程序从后台恢复时,又有两个线程被无意中启动了。

如果应用程序只是从冻结状态重新启动,Android也会调用onCreate()方法。 您需要一种方法来知道您的两个后台线程是否已经在运行,如果这样,则不要第二次启动它们。

跟踪这些启动过程的一种可能方法是将创建的线程分配给主活动中的静态字段。 在创建时,您应该能够检查线程字段是否不为空以及线程是否处于活动状态。

onCreate带有一个参数(捆绑),您可以在其中查找存储状态。 但是,如果应用程序确实已被挂起并卸载了类,则您的两个线程可能不会停止(除非在这种情况下不能这样做)。 因此,我不确定是否将像“线程已启动”这样的布尔值存储在此捆绑包中,然后再依赖于它们是否好。

更好的办法是在onStop()上停止这些线程,然后在onStart()上启动它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM