纳金网

标题: coroutine yield 多线程 [打印本页]

作者: yeu1233    时间: 2012-9-4 10:23
标题: coroutine yield 多线程
Coroutine&yield
Coroutine效果类似Objective c中的nstread,创建一个线程。但它不是多线程。
StartCoroutine,StopCoroutine,StopAllCoroutines。
Js和c#的调用不同,js不用自己实现协同操作。C#需要调用函数实现协同操作。
Yield效果类似sleep函数,休眠线程。但不是sleep函数。


多线程处理
网上拔下来的例子。在这喷一下那些只懂分享,不去实践的人。
Time.time在多线程中不能用。你们要是运行这段代码就不会原版的分享这东西了。
使用Time.time会导致unity3d整个程序的崩溃。

在unity3d中点pause按钮,只会停止mainthread,不会停止new thread的线程。

using UnityEngine;
using System.Collections;
using System.Threading;

public class MyThread
{
    public int count;
    string thrdName;
    public MyThread(string nam)
    {
        count = 0;
        thrdName = nam;
    }
    public void***n()
    {
        Debug.Log("start***n a thread");
        do{
            Thread.Sleep(1000);
            Debug.Log("in child thread"+"count="+count);
            count++;
            }while(count <20);
            Debug.Log("end thread");
        }
        
    }
   
   
   
    public class AAaA : MonoBehaviour {
        
        // Use this for initialization
        void Start () {
            //Debug.Log("start main"+Time.time);
            MyThread mt = new MyThread("CHILE ");
            Thread newThrd = new Thread(new ThreadStart(mt***n));
            newThrd.Start();
            
        }
        
        // Update is called once per frame
        void Update () {
            Debug.Log(Time.time);

            
        }
    }




欢迎光临 纳金网 (http://rs.narkii.com/club/) Powered by Discuz! X2.5