コード例 #1
0
        internal void PreDisposeCheck()
        {
            for (var i = 0; i < kMaxTypes; i++)
            {
                m_ComponentSafetyHandles[i].WriteFence.Complete();
            }

            for (var i = 0; i < kMaxTypes * kMaxReadJobHandles; i++)
            {
                m_ReadJobFences[i].Complete();
            }

#if ENABLE_UNITY_COLLECTIONS_CHECKS
            for (var i = 0; i < kMaxTypes; i++)
            {
                var res0 = AtomicSafetyHandle.EnforceAllBufferJobsHaveCompleted(m_ComponentSafetyHandles[i].SafetyHandle);
                var res1 = AtomicSafetyHandle.EnforceAllBufferJobsHaveCompleted(m_ComponentSafetyHandles[i].BufferHandle);
                if (res0 == EnforceJobResult.DidSyncRunningJobs || res1 == EnforceJobResult.DidSyncRunningJobs)
                {
                    Debug.LogError(
                        "Disposing EntityManager but a job is still running against the ComponentData. It appears the job has not been registered with JobComponentSystem.AddDependency.");
                }
            }
#endif
        }
コード例 #2
0
 public void PreDisposeCheck()
 {
     for (var i = 0; i < m_ComponentSafetyHandlesCount; i++)
     {
         var res0 = AtomicSafetyHandle.EnforceAllBufferJobsHaveCompleted(m_ComponentSafetyHandles[i].SafetyHandle);
         var res1 = AtomicSafetyHandle.EnforceAllBufferJobsHaveCompleted(m_ComponentSafetyHandles[i].BufferHandle);
         if (res0 == EnforceJobResult.DidSyncRunningJobs || res1 == EnforceJobResult.DidSyncRunningJobs)
         {
             Debug.LogError(
                 "Disposing EntityManager but a job is still running against the ComponentData. It appears the job has not been registered with JobComponentSystem.AddDependency.");
         }
     }
 }
コード例 #3
0
        unsafe void EmergencySyncAllJobs()
        {
            for (int i = 0; i != m_JobDependencyForReadingManagersLength; i++)
            {
                int type = m_JobDependencyForReadingManagersPtr[i];
                AtomicSafetyHandle.EnforceAllBufferJobsHaveCompleted(m_SafetyManager.GetSafetyHandle(type, true));
            }

            for (int i = 0; i != m_JobDependencyForWritingManagersLength; i++)
            {
                int type = m_JobDependencyForWritingManagersPtr[i];
                AtomicSafetyHandle.EnforceAllBufferJobsHaveCompleted(m_SafetyManager.GetSafetyHandle(type, true));
            }
        }
コード例 #4
0
        internal static void EmergencySyncAllJobs(ref UnsafeIntList readingSystems, ref UnsafeIntList writingSystems, ComponentDependencyManager *dependencyManager)
        {
            for (int i = 0; i != readingSystems.Length; i++)
            {
                int type = readingSystems.Ptr[i];
                AtomicSafetyHandle.EnforceAllBufferJobsHaveCompleted(dependencyManager->Safety.GetSafetyHandle(type, true));
            }

            for (int i = 0; i != writingSystems.Length; i++)
            {
                int type = writingSystems.Ptr[i];
                AtomicSafetyHandle.EnforceAllBufferJobsHaveCompleted(dependencyManager->Safety.GetSafetyHandle(type, true));
            }
        }
コード例 #5
0
        private unsafe void EmergencySyncAllJobs()
        {
            int index = 0;

            while (true)
            {
                if (index == this.m_JobDependencyForReadingManagersLength)
                {
                    for (int i = 0; i != this.m_JobDependencyForWritingManagersLength; i++)
                    {
                        int num4 = this.m_JobDependencyForWritingManagersPtr[i];
                        AtomicSafetyHandle.EnforceAllBufferJobsHaveCompleted(this.m_SafetyManager.GetSafetyHandle(num4, true));
                    }
                    return;
                }
                int type = this.m_JobDependencyForReadingManagersPtr[index];
                AtomicSafetyHandle.EnforceAllBufferJobsHaveCompleted(this.m_SafetyManager.GetSafetyHandle(type, true));
                index++;
            }
        }