lock
От: Аноним  
Дата: 23.06.10 14:29
Оценка:
является ли второй лок в коде избыточным?

 if (data== null)
            {
                lock (new object())
                {
                    if (data== null)
                    {
                        lock (new object())
                        {
                            data =
                                GetDataInternal();
                        }
                    }
                }
            }
Re: lock
От: samius Япония http://sams-tricks.blogspot.com
Дата: 23.06.10 14:31
Оценка: 1 (1) +5
Здравствуйте, Аноним, Вы писали:

А>является ли второй лок в коде избыточным?


А>
А>                lock (new object())
А>

В таком случае сам lock является избыточным
Re: lock
От: nikov США http://www.linkedin.com/in/nikov
Дата: 23.06.10 14:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>является ли второй лок в коде избыточным?


Они оба избыточны
Re: lock
От: Qbit86 Кипр
Дата: 23.06.10 14:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>является ли второй лок в коде избыточным?


Здесь и первый лок избыточен.
Глаза у меня добрые, но рубашка — смирительная!
Re: lock
От: Mr.Cat  
Дата: 23.06.10 15:03
Оценка:
Здравствуйте, Аноним, Вы писали:
А>lock (new object())
Тут, вероятно, имелся в виду какой-то конкретный объект, а не каждый раз новый?
Re: lock
От: nikov США http://www.linkedin.com/in/nikov
Дата: 23.06.10 15:04
Оценка: 18 (1)
Здравствуйте, Аноним, Вы писали:

А>является ли второй лок в коде избыточным?


Рекомендую почитать что-то базовое про многопоточность и синхронизацию:

Of bathrooms, toilet paper, and thread synchronization
Multi-threading in .NET
Threading in C#
Re[2]: lock
От: Аноним  
Дата: 23.06.10 15:24
Оценка:
just to put it into context...

public static DataSet GetData()
{
    if (data== null)
            {
                lock (new object())
                {
                    if (productData == null)
                    {
                        data=
                            GetDataInternal(); // должно вызываться единожды
                    }
                }
            }

            return data;
}
Re[3]: lock
От: Mr.Cat  
Дата: 23.06.10 15:33
Оценка: 18 (1)
Здравствуйте, Аноним, Вы писали:
А>lock (new object())
...
А>GetDataInternal(); // должно вызываться единожды
Оно? http://msdn.microsoft.com/ru-ru/magazine/cc163715%28en-us%29.aspx#S10
Re: lock
От: Ziaw Россия  
Дата: 23.06.10 15:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А>является ли второй лок в коде избыточным?


Пример смешной, да.
Скорее всего речь идет о http://en.wikipedia.org/wiki/Double-checked_locking
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.