Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Границы применения timed locking для избежания Dead Lock / 6 сообщений из 6, страница 1 из 1
03.03.2017, 12:57
    #39413634
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы применения timed locking для избежания Dead Lock
Одно из решений по избежанию дедлоков, которое не всегда работает это timed locking

в concurrency in practice по этому поводу написано:

авторUsing timed lock acquisition to acquire multiple locks can be effective against deadlock even when timed locking is not used consistently throughout the program. If a lock acquisition times out, you can release the locks, back off and wait for a while, and try again, possibly clearing the deadlock condition and allowing the program to recover. ( This technique works only when the two locks are acquired together; if multiple locks are acquired due to the nesting of method calls, you cannot just release the outer lock, even if you know you hold it. )

Поясните пожалуйста эту фразу. Не понял её.

P.S. про то, что можно захватывать ресурсы в одном порядке я в курсе.

Если брать пример с обедающими философами, то это решение позволяет уменьшить вероятность дедлока попыткой 'что-то пошевелить', что может привести к livelock.

Это считается применимым вариантом использования или нет?
...
Рейтинг: 0 / 0
03.03.2017, 13:39
    #39413652
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы применения timed locking для избежания Dead Lock
questioner,

Смысл фразы в том что в независимых локах ты можешь освободить любой, а во вложеных, либо внутренний, либо оба.
...
Рейтинг: 0 / 0
03.03.2017, 14:01
    #39413660
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы применения timed locking для избежания Dead Lock
Blazkowicz,

Когда локи являются зависимыми, а когда нет?
...
Рейтинг: 0 / 0
03.03.2017, 14:35
    #39413683
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы применения timed locking для избежания Dead Lock
questioner,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
class A {
  synchronized void outer() {
     b.nested();
  }
}

class B {
  synchronized void nested() {
     ...
  }
}
...
Рейтинг: 0 / 0
03.03.2017, 14:47
    #39413687
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы применения timed locking для избежания Dead Lock
Blazkowiczquestioner,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
class A {
  synchronized void outer() {
     b.nested();
  }
}

class B {
  synchronized void nested() {
     ...
  }
}



согласен, что в этом случае нет смысла освобождать только outer


ммм... а независимый это когда весь механизм локинга сосредоточен внутри одного класса?

open-call в книжке?
...
Рейтинг: 0 / 0
06.03.2017, 23:12
    #39415087
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы применения timed locking для избежания Dead Lock
У synchronized нет физической возможности освободить внешний а потом внутренний.
Для этого существуют другие примитивы.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Границы применения timed locking для избежания Dead Lock / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]