C # клонируется вне блокировки потока - PullRequest
0 голосов
/ 26 октября 2018

Безопасно ли использовать этот метод в многопоточном режиме:

private Dictionary<int,myObject> myDict = new Dictionary<int,myObject>();
private static object _syncRoot = new object();
void updateDict(int i)
{
    myObject obj = null;
    lock(_syncRoot)
    {
         myDict.TryGetValue(i, out obj);
    }
    if(obj==null) obj = new myObject();
    else
    {
       obj = DeepClone(obj);
    }
    //perform operations on obj
    lock(_syncRoot)
    {
        myDict[i] = obj;
    }
}

Я спрашиваю, потому что, хотя перемещение глубокого клонирования в первом замке определенно сделает его безопасным для потоков, но это большой объект, который приведет к клонированию.замедлить выполнение из-за большего времени ожидания потока.

Словарь никогда не изменяется вне этого метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...