Unity多线程、线程池的使用

Unity技术QQ群:484275915,有需要可以加群相互探讨
#C#多线程的使用
Unity支持多线程。
感谢网友指正错误,两年前写的文章,现在回头看,发现上一句话确实是错的。
这里重申一下,Unity不支持多线程,我们在Unity中使用的多线程其实是C#的多线程,而非Unity的多线程。Unity只有一个主线程,以及使用“协程”的伪线程。
当大家使用到Unity读取外界数据或者操作网格的时候,多线程会非常的好用,因为操作可能比较昂贵,多开辟一个线程充分利用多核CPU的优势是一件非常重要的事情,其实多线程的使用非常简单,但是他却可以避免很多主线程卡死的操作。
在这里我们主要记录一下C#中使用多线程以及线程池。
在C#中使用线程池需要以下这个类库using System.Threading;

	private Thread tempThread;
	void Start () {
        tempThread = new Thread(MyMethod);//将方法注册到线程句柄当中,注意保留这个句柄,因为可能会有用。
        tempThread.Start();//这句代码控制这个线程的开始。
	}
	//这是线程方法
    private void MyMethod()
    {
        Debug.Log("开了一下线程");
    }

Unity多线程、线程池的使用_第1张图片
#C#线程池的使用
线程池相对于线程而言更加方便,在线程池中的线程是由系统进行统一管理,我们在使用的过程中不需要自己去对线程进行开关操作,这些系统都会给我们做了。而且线程池还有一个好处,就是可以传参!

	private int m_iParam;//随便一个类型的参数
	void Start () {
        ThreadPool.QueueUserWorkItem(new WaitCallback(MyMethod), m_iParam);//将方法添加进线程池,并传入参数
	}
    private void MyMethod(object param)
    {
        Debug.Log("开了一下线程");
    }

Unity多线程、线程池的使用_第2张图片

你可能感兴趣的:(unity)