查看: 1111|回复: 0
打印 上一主题 下一主题

coroutine yield 多线程

[复制链接]

435

主题

2

听众

6371

积分

高级设计师

Rank: 6Rank: 6

纳金币
6372
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-9-4 10:23:57 |只看该作者 |倒序浏览
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);

            
        }
    }
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-5-1 13:57 , Processed in 0.078609 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部