예제 #1
0
        public object GetValue(int id)
        {
            ValueWaiter waiter = CreateOrGetWaiter(id);
            //waiter = list.GetOrAdd(id, waiter);
            var result = waiter.GetValue();

            dictWaiters.Remove(id, out _);
            return(result);
        }
예제 #2
0
        private ValueWaiter CreateOrGetWaiter(int id)
        {
            ValueWaiter waiter;

            lock (listLocker)
            {
                if (dictWaiters.ContainsKey(id))
                {
                    waiter = dictWaiters[id];
                }
                else
                {
                    waiter = new ValueWaiter();
                }
                dictWaiters.TryAdd(id, waiter);
            }

            return(waiter);
        }