AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.12.2001, 20:00   #1  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
HB_Tutorial_DBLock - пример действий, приводящих к DeadLock


Описание
Проект создан в дополнение к статье Базы знаний DeadLock .
Используйте его в качестве примера, иллюстрирующего эту статью.

Использование
Проект состоит из двух примеров.

Форма HB_Tutorial_DBLock_Unconditional.

Запустив эту форму в двух приложениях, достаточно скоро вы получите DeadLock. Форма модифицирует таблицы HB_Tutorial_DBLock_TableA и HB_Tutorial_DBLock_TableB в следующем порядке:
  • Начало транзакции (ttsbegin).
  • Блокирование таблицы A (select for update from A).
  • Блокирование таблицы Б (select for update from Б).
  • Модифицирование таблицы Б (Б.update).
  • Модифицирование таблицы А (А.update).
  • Конец транзакции (ttscommit).
  • Начало транзакции.
  • Блокирование таблицы Б.
  • Блокирование таблицы А.
  • Модифицирование таблицы А.
  • Модифицирование таблицы Б.
  • Конец транзакции.</li>
После действий, отмеченных курсивом, происходит задержка, чтобы увеличить вероятность возникновения DeadLock.

Пошаговое выполнение действий.

Используйте форму HB_Tutorial_DBLock_Client для запуска конкурирующих процессов, а форму HB_Tutorial_DBLock_Control для управления ими. Форма Client может работать в следующих режимах:
= Работа с одной таблицей. Процесс будет модифицировать записи только в одной таблице.
= Работа с двумя таблицами. В этом режиме можно выбрать, с какой таблицы начинать блокировку (для модификации).

Для управления работой процессов используется форма HB_Tutorial_DBLock_Control. В этой форме в списке автоматически появляются имена процессов, начавших транзакции. С помощью кнопок «Шаг» и «Стоп» выбранному процессу можно отправить сигнал выполнить следующий шаг или остановить работу.

Для создания DeadLock запустите два работающих с двумя таблицами процесса: один из них сначала блокирует таблицу А, другой – таблицу Б.

Максим Горбунов
Вложения
Тип файла: zip hb_tutorial_dblock.zip (7.8 Кб, 309 просмотров)
Тип файла: img300-1 (1.5 Кб, 720 просмотров)
Тип файла: img300-2 (5.1 Кб, 711 просмотров)
Тип файла: img300-3 (3.2 Кб, 625 просмотров)
Теги
блокировка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Fed: Пример создания нового складского документа mazzy DAX: База знаний и проекты 8 15.09.2008 10:52
ALEG: Очень интересный пример интеграции Microsoft Dynamics NAV и InfoPath Blog bot DAX Blogs 0 09.11.2006 06:00
Пример использования класса RunBase* Andronov DAX: Программирование 3 17.09.2003 13:12
HB_Tutorial_setTmpData - пример использования метода setTmpData vitk DAX: База знаний и проекты 0 10.12.2001 15:26
DeadLock Maxim Gorbunov DAX: База знаний и проекты 0 03.12.2001 20:16

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:05.