ConcurrentDictionary это многопотоковое исполнение, чтобы отредактировать значение после GetOrAdd?
Я использую метод GetOrAdd параллельного словаря для получения списка значений, а затем со ссылкой на этот список значений редактирую их. Является ли это потокобезопасным, чтобы сделать это таким образом?
Первым методом я добавляю значение,а вторым-очищаю список.
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Threading.Tasks;
using Test.Web.Services;
namespace Test.Web.Messaging
{
    public class Dispatch
    {
        private static readonly ConcurrentDictionary<string, IList<Message>> Messages = new ConcurrentDictionary<string, IList<Message>>();
        public static void AddMessage(string id, Message value)
        {
            var msgs = Messages.GetOrAdd(id, new List<Message>());
            msgs.Add(value);
        }
        public static void Send(string id)
        {
             var msgs = Messages.GetOrAdd(id, new List<Message>());
             foreach (var msg in msgs)
             {
                 Connection.Send(id, msg);
             }
             msgs.Clear();
        }
    }
}