Esempio n. 1
0
            /// <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;
            }
Esempio n. 2
0
            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;
            }