Unity-Loom的多线程研究及优化

1.Loom的原理Loom继承自MonoBehaviour,在Unity流程管理中Update方法下检查需要回调的Action进行加锁并回调,确保在主线程执行,回调序列本身又作为静态数据保存,在任意线程调用添加,简单轻量2.初始化优化原版Loom的初始化方法较为繁琐,每个场景都需要进行初始化,其实可以使用Unity的永不销毁方法来将Loom作为一个永久物体保存下来。 这样,只需在初始化时的主线程中
摘要由CSDN通过智能技术生成

###1.Loom的原理

Loom继承自MonoBehaviour,在Unity流程管理中Update方法下检查需要回调的Action进行加锁并回调,确保在主线程执行,回调序列本身又作为静态数据保存,在任意线程调用添加,简单轻量

###2.初始化优化
原版Loom的初始化方法较为繁琐,每个场景都需要进行初始化,其实可以使用Unity的永不销毁方法来将Loom作为一个永久物体保存下来。
这样,只需在初始化时的主线程中调用一次
Loom.Initialize();
之后在任意场景任意线程均可调用
Loom.QueueOnMainThread(()=>{ });
来完成主线程的操作

using UnityEngine;  
using System.Collections;  
using System.Collections.Generic;  
using System;  
using System.Threading;  
using System.Linq;  

public class Loom : MonoBehaviour  
{  
	public static int maxThreads = 8;  
	static int numThreads;

    private static Loom _current;
	public static Loom Current  
	{  
		get  
		{  
			Initialize();  
			return _current;  
		}  
	}  
	//####去除Awake
//	void Awake()  
//	{  
//		_current = this;  
//		initialized = true;  
//	}  
	
	static bool initialized;  

	//####作为初始化方法自己调用ÿ
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值