|
|
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
vromanovТ.е. надо не забыть настроить таймаут для выполнения стейтментов. Это абсолютно избыточно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2013, 23:23 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатоЛойТеперь допускаем, что... ....система построена без использования естественного интеллекта. Ну и кто при этом ССЗБ?.. Дмитрий, поумерьте язвительности и грубости, пожалуйста, это не ваш личный блог... Теперь таки представьте, что возможность чуваков хаотично метаться между ресурсами дана нам как требование, то есть свыше (см. стартовый топик). (Например, будем иметь 50 исков на дню за ограничение свободы и прочую дискриминацию, или, если уж шутливый тон не воспринимается, считаем что мы пишем интеграционный модулёк к какой-то большой и сложной системе, где не можем себе позволить выстраивать запросы в очередь, поскольку мы не столовая, а кафе, в которой 99% заказов - из одного блюда). Что дальше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 02:49 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛой поскольку мы не столовая, а кафе, в которой 99% заказов - из одного блюда). Что дальше? не вижу тут причны для дедлока. Дедлки возникают по следующей причне. У вакс есть два объекта A и Б. Предположим, это количество средств на счету покупателя и количество товара Х. Дедлок возникнет если одна часть вашего приложения, сначала залочит объект А, вторая объект Б. А потом первая попытается получить доступ к Б а вторая к А. Вот они и будут ждать друг-друга. Отсутвие таких проблем решается дизайном. Также для уменшения врероятности любых - уменьшение зацепления. Т.е. если у вас етсь транзакции делайте их короткими. Например, если кто-то выбрал товар, то не надо лочить эту строчку, а просто зарезервируйте его на некоторое количество времени и осводите транзакцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 09:55 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
vromanovДедлки возникают по следующей причне. У вакс есть два объекта A и Б. Предположим, это количество средств на счету покупателя и количество товара Х. Дедлок возникнет если одна часть вашего приложения, сначала залочит объект А, вторая объект Б. А потом первая попытается получить доступ к Б а вторая к А. Вот они и будут ждать друг-друга. Я вас понял, вы меня - нет. Ваше описание дедлока мне понятно. Она - суть простейшей модели дедлока. Я привёл пример из жизни, работающий именно по этой модели, только, похоже, вы за множеством дедлоков в моём примере этот самый дедлок то и не заметили. Мой пример работает по вашей модели: Вместо объекта А - компот, вместо объекта Б - пирожное. Два чувака (две части нашего приложения) покупают подружкам пирожное с компотом , но один сначала пошёл налево за пирожным, второй направо за компотом (лочат объекты А и Б). Когда каждый из них пришёл за вторым блюдом (попытались получить доступ к Б и А), оказалось что второго блюда для них нет. Каждому вернуться к барышням без второго блюда гордость не позволяет, новые компоты с пирожными не приносят. "Вот они и будут ждать друг-друга", ожидая, кто вернёт своё блюдо на полку первым :). vromanovАнатоЛой поскольку мы не столовая, а кафе, в которой 99% заказов - из одного блюда). Что дальше? не вижу тут причны для дедлока. Конкретно данная фраза - про неэффективность организации потока с подносами. Причина для дедлока надеюсь внятно описана выше на ваших объектах А и Б. vromanovОтсутвие таких проблем решается дизайном. Также для уменшения врероятности любых - уменьшение зацепления. Т.е. если у вас етсь транзакции делайте их короткими. Например, если кто-то выбрал товар, то не надо лочить эту строчку, а просто зарезервируйте его на некоторое количество времени и осводите транзакцию. По-моему, никто из участников не сомневается, что проблема дедлока решается - если нет требований/ограничений для реализации того или иного алгоритма. Мы с первом поста говорим о том, есть ли такие функциональные требований (читай "требования из среды") , что дедлоки таки будут случаться (читай "нельзя организовать обработку ресурсов таким образом, что мы полностью избежим ситуаций с возникновением дедлока, и не придётся придумывать тайм-ауты или "внешних наблюдателей" или доп. обработку, прежде чем заблокировать ресурс")). Я привёл пример, когда упорядочивание ресурсов (последовательность блюд на вдоль реек с подносами) и упорядочивание потребителей ресурсов (посетителей кафе в очереди с подносами) не удовлетворяет функциональным требованиям (посетители вправе в произвольном порядке подходить к блюдам). П.С.: В топике не хватает топик-стартера для оценки достигнутых результатов :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 11:21 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойП.С.: В топике не хватает топик-стартера для оценки достигнутых результатов :) Ну, возможно, следует достигнуть еще больших результатов, и чтобы там было именно теоретическое что-то (вопрос то теоретический по мнению ТС). Например, теорема с формальным доказательством. Возможно, нескольких примеров ему все еще недостаочно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 11:52 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойТеперь таки представьте, что возможность чуваков хаотично метаться между ресурсами дана нам как требование, то есть свыше (см. стартовый топик). Тогда достаточно устранить второе условие дедлока и отпускать занятый ресурс прежде чем вставать в очередь к следующему. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 12:43 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатоЛойТеперь таки представьте, что возможность чуваков хаотично метаться между ресурсами дана нам как требование, то есть свыше (см. стартовый топик). Тогда достаточно устранить второе условие дедлока и отпускать занятый ресурс прежде чем вставать в очередь к следующему. К сожалению, я не понял, что это будет обозначать в моём примере... Отдавать компот/пирожное барышням, прежде чем идти за пирожным/компотом? Или возвращать компот/пирожное на полку? Поясните, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 16:22 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
vadiminfoАнатоЛойП.С.: В топике не хватает топик-стартера для оценки достигнутых результатов :) Ну, возможно, следует достигнуть еще больших результатов, и чтобы там было именно теоретическое что-то (вопрос то теоретический по мнению ТС). Например, теорема с формальным доказательством. Возможно, нескольких примеров ему все еще недостаочно. Согласен, все дружно без целей постебались. Разрешите сворачиваться ? . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 16:27 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойК сожалению, я не понял, что это будет обозначать в моём примере... Взял компот, перелил себе на поднос, вернул на полку. Взял пирожное, скопировал себе на поднос, вернул на полку. Теперь у тебя есть обои, можешь идти к барышням. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 16:40 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатоЛойК сожалению, я не понял, что это будет обозначать в моём примере... Взял компот, перелил себе на поднос, вернул на полку. Взял пирожное, скопировал себе на поднос, вернул на полку. Теперь у тебя есть обои, можешь идти к барышням. В моём примере я не могу "скопировать" пирожное или компот. Выше предложение по реализации нереализуемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 19:41 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойВ моём примере я не могу "скопировать" пирожное или компот. Совесть не даёт? Ню-ню... В таком случае твоё доказательство неизбежности дедлоков звучит как "я не могу иначе". К счастью, не все люди так религиозны. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 19:51 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатоЛойВ моём примере я не могу "скопировать" пирожное или компот. Совесть не даёт? Ню-ню... В таком случае твоё доказательство неизбежности дедлоков звучит как "я не могу иначе". К счастью, не все люди так религиозны. У меня впечатление, что мы все о разном. Dimitry SibiryakovДеадлоки это артефакт реализации конкретной СУБД. Никакой общей теории для них нет. Дмитрий, в каких известных вам СУБД такого артефакта нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 20:54 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойДмитрий, в каких известных вам СУБД такого артефакта нет? ЕМНИП, их нет в Нимбусе. Но не надо передёргивать: между "нет общей теории" и "нет дедлоков" - дистанция огромного размера. Первое означает, что там, где одна СУБД встаёт на дедлок, другая этого не делает и наоборот. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 21:04 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛой2. mikron, непонятно что такое "система полностью подконтрольна". 3. mikron, непонятно что такое "внешних источников помех нет". 4. mikron, любой путь ухода от дедлока потребует дополнительных затрат со стороны системы: 1) дополнительные ресурсы памяти; Система на этапе разработке и любые изменения в реализации допустимы. Под внешними источниками помех я подразумевал сторонние системы или действия ползователей. Другими словами их просто нет. Доступ к базе данных предоставлен исключително теоретически разрабатываемой системе. Память упрощённо можно сщитать резиновой. АнатоЛой2) дополнительные вычисления; 3) дополнительное время на обработку; или может "упереться" в нефункциональные требований (при имеющихся ограничениях в вычислительных ресурсах): 1) максимальное время обработки пакета не должно превышать ...; 2) количество повторных попыток обработки пакета не должно превышать ...; 3) время ожидания пакета до обработки не должно превышать ...; Время обработки как другие перечисленные требования могут быть функционалными. Но интересно иммено: может ли возникнуть ситуация, когда подобные требования являются функционалными и в то-же время обуславливают риск дедлока? Очень хороший пример с очередью. конечно решает все проблемы но превращает систему в однопользовательскую, т.к. подразумевает что обслуживание одного клиента не оставляет блокировок и является атомарным действием. Я рассматриваю многопользовательскую систему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 12:42 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойПо-моему, никто из участников не сомневается, что проблема дедлока решается - если нет требований/ограничений для реализации того или иного алгоритма. Мы с первом поста говорим о том, есть ли такие функциональные требований (читай "требования из среды") , что дедлоки таки будут случаться (читай "нельзя организовать обработку ресурсов таким образом, что мы полностью избежим ситуаций с возникновением дедлока, и не придётся придумывать тайм-ауты или "внешних наблюдателей" или доп. обработку, прежде чем заблокировать ресурс")). Я привёл пример, когда упорядочивание ресурсов (последовательность блюд на вдоль реек с подносами) и упорядочивание потребителей ресурсов (посетителей кафе в очереди с подносами) не удовлетворяет функциональным требованиям (посетители вправе в произвольном порядке подходить к блюдам). Если функционалным требованием является доставка комплексного обеда/полдника барыщням, то решение с упорядочиванием доступа к компоту,пиржному и барышням решает проблему, но так-же подразумевает что ресурсы можно упорадочить по единому критерию. Другой пример: У нас есть экспедитор, который находится в произволной точке (Р) масквы, у наст есть Н складов, разбросанных по всей территории масквы. Экспедитору поступает заказ, собрать набор артиклей А1, А2, А3 со складов и доставить клиенту в точку (Х). Ясно что не на каждом складе есть есть все артикли в достаточном количестве, таким образом экспедитору придётся резервировать акртикли с разных складов. Ясно так-же что порядок обхода складов зависит от позиции экспедитора и определяется функцией растояния до склада. Операция резервирования всего заказа должна быть атомарная. Если порядок артиклей артиклей строго детерменирован, то порядок складов - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 13:06 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатоЛойК сожалению, я не понял, что это будет обозначать в моём примере... Взял компот, перелил себе на поднос, вернул на полку. Взял пирожное, скопировал себе на поднос, вернул на полку. Теперь у тебя есть обои, можешь идти к барышням. Я себя так понимяю, это попытка расказать про "оптимистик локинг", но стратегия хоть и имеет в названии слово "локинг" ничего бщего с темой не имеет и так-же не гарантирует зашиту от дедлока. Другими словами: копия ресурса ресурсом не является. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 13:11 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronстратегия хоть и имеет в названии слово "локинг" ничего бщего с темой не имеет и так-же не гарантирует зашиту от дедлока. Да неужели? Ресурс на время "взятия" должен быть заблокирован? Должен. Значит локи таки наличествуют. Дедлок при схеме, где каждый поток удерживает только один ресурс и всегда освобождает его прежде, чем становится в очередь за следующим, возможен? Невозможен. ЧиТД: дедлоки не являются неизбежностью. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 13:40 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovДедлок при схеме, где каждый поток удерживает только один ресурс и всегда освобождает его прежде, чем становится в очередь за следующим, возможен? Невозможен. Вы правы, при такой ситуации дедлок не возможен. Осталось только доказать что любую многопользователскую систему можно привести к держанию только одного лока. (Это то-же самое что всем барыщням пить из одного стакана, ведь держать одновременно и стакан и пирожное нам никак нелзя: иначе боолщой дедлок :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 14:05 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovmikronстратегия хоть и имеет в названии слово "локинг" ничего бщего с темой не имеет и так-же не гарантирует зашиту от дедлока. Да неужели? Ресурс на время "взятия" должен быть заблокирован? Должен. Значит локи таки В интернете много обяснений, почему оптимистик локинг никак не пересекается с дедлок и так-же часто встречаются подобные заблуждения. http://www.mail-archive.com/ejb-interest@java.sun.com/msg11093.html]Вот на вскидку первый тыц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 14:21 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronведь держать одновременно и стакан и пирожное нам никак нелзя Кусать пирожное и одновременно хлебать из стакана невозможно чисто физиологически. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 14:51 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovmikronведь держать одновременно и стакан и пирожное нам никак нелзя Кусать пирожное и одновременно хлебать из стакана невозможно чисто физиологически. держать != хлебать Попробуйте доказать что любую многопользователскую систему можно привести к держанию только одного лока и соблюсти все требования АЦИД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 16:02 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronОчень хороший пример с очередью. конечно решает все проблемы но превращает систему в однопользовательскую, т.к. подразумевает что обслуживание одного клиента не оставляет блокировок и является атомарным действием. Я рассматриваю многопользовательскую систему. Совсем нет.. Вот предположим у нас етсь таблица товраров и таблица счетов покупателей. Когда просиходит покупка надо уменьшик количество доступных товаров и количестов денег на счету. Как мы это делаем, 1) Открываем транзакцию. 2) Уменьшаем количестов твоваров 3) Уменьшаем количество денег 4) Закрываем транзакцию с успехом или ролбачим в случае если например, товара или денег не хватило. Как тут может произойти дедлок. Кто-то покупает селедку и молко, а кто-то молоко и селедку. Первый уменьшил количество слеледки залочив строку с селедкой. Второй уменьшил остаток молока и залочил кол-во молока. После этого они не могут завершить операцию т.к. нужные им строчки держит кто-то другой. Чтобы такого не было - посто сортируем товары в корзине. В результатае дедлка не будет. Система при этом будет вполне многопользовательской. Более того, в большимснтве случаев даже не придется освобождения залоченных строк, т.к. чаще все покупают разные товары. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 16:19 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
vromanovmikronОчень хороший пример с очередью. конечно решает все проблемы но превращает систему в однопользовательскую, т.к. подразумевает что обслуживание одного клиента не оставляет блокировок и является атомарным действием. Я рассматриваю многопользовательскую систему. Совсем нет.. Я не понял, с чем вы не согласны? С утверждением: пускать по одному человеку в супермаркет == однопользователский режим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 16:31 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronЯ не понял, с чем вы не согласны? С утверждением: пускать по одному человеку в супермаркет == однопользователский режим? Аналогия не верна.. Представте ресторан системы "шведский стол". Народ может брать все что угодно, но вдоль столов он движется в одном направлении. Можно обгонять, можно пропускать какие-то кушания итд. Основное требование - движение в одном направлении. Перед входом висит меню, которое обновляется. Человек посмотрел на меню, выбрал что хочет, пошел брать. Если чего-то уже нет, тогда он либо растроенный уходит, либо идет на вторую итерацию вернув все то что уже набрал. При этом люди по столам пробегают ОЧЕНЬ быстро. на всякий случай, у меня возникает что вы любую базу назовете однопользовательской, ведь только один пользователь в любой момент может менять одну строку в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 16:39 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
vromanovmikronЯ не понял, с чем вы не согласны? С утверждением: пускать по одному человеку в супермаркет == однопользователский режим? Аналогия не верна.. Какая аналогия? С чем? Я вобще аналогий не приводил. О чём вы? Мне кажется, вы ломитесь в открытую дверь. Всё что вы говорите - я почти во всём с вами согласен (за исключением в вашем примере: ресурс после изменения нельза освобождать до завершения транзакции), и никогда этому не возражал. Я даже привёл наглядный пример, где этот метод не работает. 14500341 Давайте его обсудим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 17:55 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38310232&tid=1541155]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 275ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...