Сообщение Двойная блокировка переключатель от 16.09.2015 13:28
Изменено 16.09.2015 13:39 igor-booch
Блокировка эксклюзивно блокирует два ресурса.
Но не два одновременно, а переключается с блокировки одного на блокировку другого ресурса.
Переключение происходит при блокировании одного из ресурсов.
Например, блокировка работает с 2-ми ресурсами A и B.
При блокировке А, освобождается B
При освобождении А, B не блокируется
И наоборот
При блокировке B, освобождается A
При освобождении B, A не блокируется
Блокировка и освобождение должны быть атомарными операциями.
Есть ли такая блокировка в готовом виде? Можно ли её реализовать с помощью других примитивов синхронизации?
Но не два одновременно, а переключается с блокировки одного на блокировку другого ресурса.
Переключение происходит при блокировании одного из ресурсов.
Например, блокировка работает с 2-ми ресурсами A и B.
При блокировке А, освобождается B
При освобождении А, B не блокируется
И наоборот
При блокировке B, освобождается A
При освобождении B, A не блокируется
Блокировка и освобождение должны быть атомарными операциями.
Есть ли такая блокировка в готовом виде? Можно ли её реализовать с помощью других примитивов синхронизации?
Блокировка эксклюзивно блокирует два ресурса.
Но не два одновременно, а переключается с блокировки одного на блокировку другого ресурса.
Переключение происходит при блокировании одного из ресурсов.
Например, блокировка работает с 2-ми ресурсами A и B.
При блокировке А, освобождается B
При освобождении А, B не блокируется
И наоборот
При блокировке B, освобождается A
При освобождении B, A не блокируется
Не обязательно чтобы работало наоборот, мне достаточно чтобы работало только в прямом направлении, но если будет работать и наоборот, то это не помешает.
Блокировка и освобождение должны быть атомарными операциями.
Есть ли такая блокировка в готовом виде? Можно ли её реализовать с помощью других примитивов синхронизации?
Но не два одновременно, а переключается с блокировки одного на блокировку другого ресурса.
Переключение происходит при блокировании одного из ресурсов.
Например, блокировка работает с 2-ми ресурсами A и B.
При блокировке А, освобождается B
При освобождении А, B не блокируется
И наоборот
При блокировке B, освобождается A
При освобождении B, A не блокируется
Не обязательно чтобы работало наоборот, мне достаточно чтобы работало только в прямом направлении, но если будет работать и наоборот, то это не помешает.
Блокировка и освобождение должны быть атомарными операциями.
Есть ли такая блокировка в готовом виде? Можно ли её реализовать с помощью других примитивов синхронизации?