Я изо всех сил стараюсь выбрать из этих двух подходов, многие из ответов здесь одобряют тот или иной. Мне нужно руководство, чтобы выбрать лучшее для моей ситуации.Двойной замок конкретного случая C#
lock (lockObject)
lock (lockObject2) {
// two critical portions of code
}
против:
lock (lockObject)
{
//first critical portion for lockObject
lock (lockObject2) {
//critical portion for lockObject2 and lockObject
}
}
Второй пример помечается как плохая практика по Coverity, и я хочу, чтобы перейти к первому, если это нормально, чтобы сделать это.
Какое из двух является лучшим (и, к лучшему, я имею в виду качество кода и меньшее количество проблем в долгосрочной перспективе)? И почему?
Редактировать 1: Первый замок используется, в частности, для этого случая.
'// критическая часть для lockObject2', разве это не критично для * обоих * блокировок? В противном случае вы бы не вложили их, не так ли? – Medinoc
Да, вы правы. Будет ли редактировать q –