public IEnumerable <MyDefinitionId[]> IdGroups() { if (m_sourceCount != CubeGridCache.DefinitionType.Count) { UpdateFromSource(); } m_lock.AcquireShared(); try { for (int index = 0; index < m_blocks.Length; index++) { yield return(m_blocks[index]); } } finally { m_lock.ReleaseShared(); } }
public IEnumerable <MyCubeBlock> BlocksOfType(MyObjectBuilderType typeId) { lock_blocks.AcquireShared(); try { List <MySlimBlock> blockList; if (CubeBlocks.TryGetValue(typeId, out blockList)) { for (int i = blockList.Count - 1; i >= 0; i--) { MyCubeBlock cubeBlock = blockList[i].FatBlock; if (cubeBlock != null) { yield return(cubeBlock); } } } } finally { lock_blocks.ReleaseShared(); } }
public void Dispose() { _lock.ReleaseShared(); _enumerator.Dispose(); }
/// <summary> /// lock this object while performing safeAction /// </summary> /// <param name="safeAction"></param> public void SafeShared(Action safeAction) { Lock.AcquireShared(); try { safeAction.Invoke(); } finally { Lock.ReleaseShared(); } }
public void Dispose() { MyLock.ReleaseShared(); }