Usando 'HttpContext.Current.Cache' de forma segura

estoy usandoCache en un método de servicio web como este:

var pblDataList = (List<blabla>)HttpContext.Current.Cache.Get("pblDataList");

if (pblDataList == null)
{
    var PBLData = dc.ExecuteQuery<blabla>(@"SELECT blabla");

    pblDataList = PBLData.ToList();

    HttpContext.Current.Cache.Add("pblDataList", pblDataList, null,
        DateTime.Now.Add(new TimeSpan(0, 0, 15)),
        Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
}

Pero me pregunto, ¿es este código seguro para subprocesos? El método del servicio web es llamado por múltiples solicitantes. Y más de un solicitante puede intentar recuperar datos y agregarlos alCache al mismo tiempo mientras el caché está vacío.

La consulta lleva de 5 a 8 segundos. ¿Introducir una declaración de bloqueo alrededor de este código evitaría posibles conflictos? (Sé que se pueden ejecutar varias consultas simultáneamente, pero quiero estar seguro de que solo se ejecuta una consulta a la vez).

Respuestas a la pregunta(3)

Su respuesta a la pregunta