public JobHandle Dispose(JobHandle inputDeps)
        {
            var jh = new DisposeJob {
                upbl = this
            }.Schedule(inputDeps);

            m_perThreadBlockLists = null;
            return(jh);
        }
        public UnsafeParallelBlockList(int elementSize, int elementsPerBlock, Allocator allocator)
        {
            m_elementSize      = elementSize;
            m_elementsPerBlock = elementsPerBlock;
            m_blockSize        = elementSize * elementsPerBlock;
            m_allocator        = allocator;

            m_perThreadBlockLists = (PerThreadBlockList *)UnsafeUtility.Malloc(64 * JobsUtility.MaxJobThreadCount, 64, allocator);
            for (int i = 0; i < JobsUtility.MaxJobThreadCount; i++)
            {
                m_perThreadBlockLists[i].lastByteAddressInBlock = null;
                m_perThreadBlockLists[i].nextWriteAddress       = null;
                m_perThreadBlockLists[i].nextWriteAddress++;
                m_perThreadBlockLists[i].elementCount = 0;
            }
        }