Parallel.ForEach - 具有嵌套实例对象的线程安全性

Big*_*ddy 2 c# task-parallel-library

在这种情况下,Employee和/或Illness实例是否是线程安全的?每个线程都有自己的对象副本吗?最初我认为每个线程都有自己的副本,但现在我不确定.

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

}
Run Code Online (Sandbox Code Playgroud)

是否可以在错误的Employee对象上设置Illness对象?我是否需要在employee.AddIllness(疾病)周围添加锁定; ?我使用这个TPL的东西越多,我发现我就越不理解

Jus*_*ner 7

您的示例仅适用于在lambda表达式范围内创建的对象,因此您无需担心.如果你正在修改lambda块之外的对象的状态,那么你需要担心锁定等.