internal bool removeFromSharingList() { #if !SQLITE_OMIT_SHARED_CACHE MutexEx pMaster; BtShared list; bool removed = false; Debug.Assert(MutexEx.NotHeld(Mutex)); pMaster = MutexEx.Alloc(MUTEX.STATIC_MASTER); MutexEx.Enter(pMaster); nRef--; if (nRef <= 0) { if (SysEx.getGLOBAL <BtShared>(Btree.s_sqlite3SharedCacheList) == this) { SysEx.setGLOBAL <BtShared>(Btree.s_sqlite3SharedCacheList, Next); } else { list = SysEx.getGLOBAL <BtShared>(Btree.s_sqlite3SharedCacheList); while (Check.ALWAYS(list) != null && list.Next != this) { list = list.Next; } if (Check.ALWAYS(list) != null) { list.Next = Next; } } if (MutexEx.SQLITE_THREADSAFE) { MutexEx.Free(Mutex); } removed = true; } MutexEx.Leave(pMaster); return(removed); #else return(true); #endif }