Unity3D中的多线程

"Unity3D多线程"
如上图,通过开启一个子线程来打印,这样打印窗口既不会造成堵塞(即不会挂起后蜂涌打印,而是很平滑的依次循环打印),也不会造成update中的堵塞。
问题来了,若退出程序,子线程仍然在工作的话,就应该关闭子线程。网上有说设置IsBackground属性为true,可以在主线程退出时,子线程也会退出,但是试了一下不行。
考虑通过在OnApplicationQuit事件中,调用Abort()方法来退出线程,试了一下依旧不行,在退出主线程后,子线程依旧执行。

"Unity3D多线程"

试了一下,在子线程循环中开启Thread.Sleep(一个很短的时间),abort终止线程便生效。但这种方法肯定不可取。如图:

"Unity3D多线程"

再测试了通过bool变量来控制线程的执行,可取,如下代码:

bool isQuit = false;
public int maxValue = 10000;
Thread aThread;
void Awake()
{
    Debug.Log("awake trigger!");
}

void Start()
{
    Debug.Log("start trigger!");
    aThread = new Thread(new ThreadStart(DoPrint));        
    aThread.Start();
}

private void DoPrint()
{
    for (int i = 0; i < maxValue; i++)//子线程执行完后其IsAlive属性变成false
    {
        if (isQuit)
        {
            return;
        }
        Debug.Log("value is:" + i);
    }
}

void Update()
{
    Debug.Log("update trigger!");
}

void OnApplicationQuit()
{
    if (aThread.IsAlive)
    {
        isQuit = true;
        Debug.Log("aThread is still alive,you quit and abort");            
    }
    else
    {
        Debug.Log("aThread is null,you quit");
    }
}