Przeglądaj źródła

调整一下纤程同步上下文Update的时机,放到LateUpdate之后,因为纤程的销毁是通过同步上下文push到纤程线程的
所以在销毁之后不能再进行update等操作,调度器会判断fiber是否disposed

tanghai 2 lat temu
rodzic
commit
3c358fb236

+ 2 - 1
Unity/Assets/Scripts/Core/Fiber/Fiber.cs

@@ -97,7 +97,6 @@ namespace ET
         {
             try
             {
-                this.ThreadSynchronizationContext.Update();
                 this.TimeInfo.Update();
                 this.EntitySystem.Update();
             }
@@ -113,6 +112,8 @@ namespace ET
             {
                 this.EntitySystem.LateUpdate();
                 FrameFinishUpdate();
+                
+                this.ThreadSynchronizationContext.Update();
             }
             catch (Exception e)
             {

+ 2 - 2
Unity/Assets/Scripts/Core/World/Module/Fiber/MainThreadScheduler.cs

@@ -75,10 +75,10 @@ namespace ET
                     continue;
                 }
 
-                this.idQueue.Enqueue(id);
-
                 SynchronizationContext.SetSynchronizationContext(fiber.ThreadSynchronizationContext);
                 fiber.LateUpdate();
+                
+                this.idQueue.Enqueue(id);
             }
 
             while (this.addIds.Count > 0)

+ 0 - 1
Unity/Assets/Scripts/Core/World/Module/Fiber/ThreadPoolScheduler.cs

@@ -51,7 +51,6 @@ namespace ET
                 {
                     continue;
                 }
-                
                 SynchronizationContext.SetSynchronizationContext(fiber.ThreadSynchronizationContext);
                 fiber.Update();
                 fiber.LateUpdate();