Beispiel #1
0
        public void ReturnFilter(FilterDocument filter)
        {
            this.m_lock.AcquireReaderLock(m_nLockTimeout);
            try
            {
                for (int i = 0; i < list.Count; i++)
                {
                    FilterHolder item = this.list[i];

                    if (item.FilterDocument == filter)
                    {
                        int nValue = Interlocked.Decrement(ref item.UsedCount);
                        if (nValue < 0)
                        {
                            throw new Exception("还回后UsedCount小于0, 错误");
                        }
                        return;
                    }
                }
            }
            finally
            {
                this.m_lock.ReleaseReaderLock();
            }

            throw new Exception("还回的对象在数组中没有找到");
        }
Beispiel #2
0
        // 加入一个 FilterDocument 对象。
        // 如果 list 中的对象数量超过了 Max 上限,则不会加入
        // return:
        //      true    已经加入
        //      false   未加入
        public bool NewFilter(FilterDocument filter)
        {
            this._lock.AcquireWriterLock(_nLockTimeout);
            try
            {
                if (this._list.Count >= this._container.Max)
                {
                    return(false);
                }

                FilterHolder item = new FilterHolder();
                item.FilterDocument = filter;
                this._list.Add(item);
                return(true);
            }
            finally
            {
                this._lock.ReleaseWriterLock();
            }
        }
Beispiel #3
0
        // return:
        //      true    已经加入
        //      false   未加入
        public bool NewFilter(FilterDocument filter)
        {
            this.m_lock.AcquireWriterLock(m_nLockTimeout);
            try
            {


                if (this.list.Count >= this.Container.Max)
                    return false;


                FilterHolder item = new FilterHolder();
                item.FilterDocument = filter;

                this.list.Add(item);

                return true;
            }
            finally
            {
                this.m_lock.ReleaseWriterLock();
            }
        }