Code review challengeThe concurrent dictionary refactoring
time to read 2 min | 216 words
In a recent code review, I had modified the following code:
_freeSegments.AddOrUpdate(memoryDataForPointer.SizeInBytes, x =>
{
var newQueue = new ConcurrentQueue<AllocatedMemoryData>();
newQueue.Enqueue(memoryDataForPointer);
return newQueue;
}, (x, queue) =>
{
queue.Enqueue(memoryDataForPointer);
return queue;
});
Into this code:
var q = _freeSegments.GetOrAdd(memoryDataForPointer.SizeInBytes,
size => new ConcurrentQueue<AllocatedMemoryData>());
q.Enqueue(memoryDataForPointer);
Can you tell me why?
More posts in "Code review challenge" series:
- (31 Dec 2015) The concurrent dictionary refactoring–answer
- (30 Dec 2015) The concurrent dictionary refactoring

Comments
Comment preview