进程、线程和协程

来源:互联网 发布:数据新闻经典案例 编辑:程序博客网 时间:2024/05/01 22:09

进程(process):拥有独立的栈和共享的堆,由操作系统调度;

线程(thread):共享堆,不共享栈,由操作系统调度;

协程(coroutine):共享堆,不共享栈,由程序员在协程的代码里显示调度。

一个应用程序对应一个进程,一个进程一般有一个主线程和若干个辅助线程,线程之间是平行运行的,在线程里面可以开启协程,让协程在特定的时间内运行。

using UnityEngine;using System.Collections;public class test : MonoBehaviour {// Use this for initializationvoid Start ()    {        StartCoroutine(coroutineHandle()); //协程开启                //循环A        for (int i = 0; i < 200; i++)        {            Debug.Log("************" + i);        }}    IEnumerator coroutineHandle()    {        //循环B        for (int i = 0; i < 100; i++)        {            Debug.Log("---------" + i);        }        yield return new WaitForSeconds(1);        //循环C        for (int i = 0; i < 100; i++)        {            Debug.Log("@@@@@@@@@@@@@@@@@@" + i);            //yield return null;        }    }// Update is called once per framevoid Update () {        Debug.Log("update");}    private void LateUpdate()    {        Debug.Log("lateupdate");    }}


Unity中协程执行原理:

协程不是线程,StartCoroutine开启协程之后,最先执行循环B,执行到yeild return xxx之后,yield return 之后的程序即循环C会被挂起,然后去执行StartCoroutine后面的语句,即执行循环A,被挂起的循环C,会在Update调用之后,LateUpdate调用之前,被执行。


Thread.Sleep()方法http://www.cnblogs.com/nzbbody/archive/2012/03/06/2381359.html


暂时理解到这里,深入理解之后再更新。