예제 #1
0
 public TransactNeedle(T value, ICloner <T> cloner, IEqualityComparer <T> comparer)
     : base(value)
 {
     _cloner     = cloner ?? throw new ArgumentNullException(nameof(cloner));
     _comparer   = comparer ?? EqualityComparer <T> .Default;
     _needleLock = new NeedleLock <Thread>(Transact.Context);
     _id         = RuntimeUniqueIdProvider.GetNextId();
 }
예제 #2
0
        public TransactNeedle(T value, IEqualityComparer <T> comparer)
            : base(value)
        {
            _cloner = CloneHelper <T> .GetCloner();

            if (_cloner == null)
            {
                throw new InvalidOperationException("Unable to get a cloner for " + typeof(T));
            }
            _comparer   = comparer ?? EqualityComparer <T> .Default;
            _needleLock = new NeedleLock <Thread>(Transact.Context);
            _id         = RuntimeUniqueIdProvider.GetNextId();
        }
예제 #3
0
파일: Pool.cs 프로젝트: erisonliang/Theraot
 public Pool(int capacity, Action <T> recycler)
 {
     _reentryGuardId = RuntimeUniqueIdProvider.GetNextId();
     _entries        = new FixedSizeQueue <T>(capacity);
     _recycler       = recycler;
 }
예제 #4
0
파일: Pool.cs 프로젝트: NN---/Theraot
 public Pool(int capacity, Action <T> recycler)
 {
     _id       = RuntimeUniqueIdProvider.GetNextId();
     _entries  = new FixedSizeQueue <T>(capacity);
     _recycler = recycler ?? throw new ArgumentNullException(nameof(recycler));
 }