Вы должны рассмотреть вопрос о некоторой оценке производительности и настройке, прежде чем принять решение о добавлении асинхронности в такой проект. Добавление потоков в процесс не всегда делает его работу лучше ... и в некоторых случаях может реально хуже дела Асинхронность также делает код более сложным, сложным в обслуживании и проверкой правильности - для преодоления этих затрат необходимо значительное преимущество.
Одним из недостатков асинхронного проекта является отсутствие возможности для вызывающего кода реагировать на любые проблемы, возникающие в результате попытки добавления в кэш. Часто это не проблема, но иногда желательно, чтобы вызывающая сторона участвовала в определении того, как обрабатывать конфликты кэша или другие конфликты.
Тем не менее, если вы в конечном итоге определите, что асинхронные операции действительно повысят производительность, вам следует рассмотреть возможность использования пула потоков, а не выделенного потока для добавления элементов. Использование пула потоков более эффективно, чем запуск выделенные потоки, и, как правило, в результате более масштабируемые. Это может быть легко достигнуто в C # с помощью асинхронного вызова делегата:
// acquire a delegate to the add method
Action<object> addToThreadPool = YourCache.Add;
// fire and forget, async invoke:
addToThreadPool.BeginInvoke( someItemToAdd, addToThreadPool.EndInvoke, null );