:병렬 실행 호출 다음 갖는 방법 스레드 안전
List<Person> persons = // list of persons
Parallel.ForEach(persons, (i) => {
AddAge(i);
});
// Does this method needs to be thread safe?
// Why?
public void AddAge(Person person)
{
// Multiple threads execute here at once. However they're
// working with their own "person" object, therefore
// each thread won't corrupt others "person" object - is this assumption correct?
person.Age =+ 10;
}
각 사람이 자신의 별도의 스레드에서 "별도로"업데이트되는 하나의 다른과는 아무 상관이 없기 때문에
- ,하지 AddAge() 메소드를 스레드로부터 안전해야합니까?
- CLR은 스레드 당 "AddAge()"의 자체 복사본을 실행하여 스레드간에 분리되도록합니까?
'참조로 전달되었습니다.'해당 행에 참조로 아무것도 전달하지 않습니다. 또한, 'AddAge'는 숫자를 계산 한 다음 바닥에 떨어 뜨립니다. 실제로 생성하는 번호 (컴파일되지 않음)는 아무 것도하지 않습니다. – Servy
사람은 참조 유형입니다. 그래서 AddAge가되면 그 객체에 대한 참조를 보냅니다. 그렇지 않니? – BobSwanson
변수의 값은 참조입니다. 이 변수는 참조가 아닌 값으로 전달됩니다. – Servy