Являются ли экземпляры Employee and/or Illness безопасными в этом сценарии? У каждого потока есть собственная копия объектов? Первоначально я думал, что каждый поток будет иметь свою собственную копию, но теперь я не уверен.Parallel.ForEach - безопасность потоков с вложенными экземплярами объектов
Parallel.ForEach(line01s, _options, o =>
{
var employee = new Employee();
// set values on employee...Safe?
var illness = new Illness();
// set values on illness...Safe?
employee.AddIllness(illness); // Illness is a property on Employee
}
Возможно ли, чтобы объект Illness был установлен на неправильном объекте Сотрудника? Нужно ли добавить замок вокруг employee.AddIllness (болезнь);? Чем больше я работаю с этим материалом TPL, тем больше я нахожу, что не понимаю
Предположим, я модифицирую состояние класса болезни в методе employee.AddIllness (болезнь). Нужно ли мне блокировать внутри этого метода? –
@BigDaddy - Нет. Вы по-прежнему будете изменять только один экземпляр из единственной лямбды. Блокировка необходима только в том случае, если вы изменяете общее состояние из нескольких потоков. –