/// <summary> /// Enqueue value into the container. /// </summary> /// <param name="value">The value to be appended.</param> public void Enqueue(T value) { #if ENABLE_UNITY_COLLECTIONS_CHECKS AtomicSafetyHandle.CheckWriteAndThrow(m_Safety); #endif NativeQueueBlockHeader *writeBlock = NativeQueueData.AllocateWriteBlockMT <T>(m_Buffer, m_QueuePool, m_ThreadIndex); UnsafeUtility.WriteArrayElement(writeBlock + 1, writeBlock->m_NumItems, value); ++writeBlock->m_NumItems; }
unsafe public void Enqueue(T entry) { #if ENABLE_UNITY_COLLECTIONS_CHECKS AtomicSafetyHandle.CheckWriteAndThrow(m_Safety); #endif byte *writeBlock = NativeQueueData.AllocateWriteBlockMT <T>(m_Buffer, m_QueuePool, m_ThreadIndex); UnsafeUtility.WriteArrayElement(writeBlock + UnsafeUtility.SizeOf <NativeQueueBlockHeader>(), ((NativeQueueBlockHeader *)writeBlock)->itemsInBlock, entry); ++((NativeQueueBlockHeader *)writeBlock)->itemsInBlock; }