powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SCAN и RLOCK
11 сообщений из 11, страница 1 из 1
SCAN и RLOCK
    #33551413
1ndig0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему не устанавливается блокировка при следующем коде?

Код: plaintext
1.
2.
3.
4.
5.
SELECT ttables
SCAN FOR ttables.flag=.T.
	li_id = ttables.id
ENDSCAN
RLOCK('ttables')
...
Рейтинг: 0 / 0
SCAN и RLOCK
    #33551447
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наводящие вопросы

1. Где находится указатель записи перед ф-ией RLOCK
2. Как проверяется наличие блокировки
3. Что возвращает RLOCK
...
Рейтинг: 0 / 0
SCAN и RLOCK
    #33551475
Maltsev Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1ndig0Почему не устанавливается блокировка при следующем коде?

Код: plaintext
1.
2.
3.
4.
5.
SELECT ttables
SCAN FOR ttables.flag=.T.
	li_id = ttables.id
ENDSCAN
RLOCK('ttables')


Потому что после выхода из Scan FOR указатель записи стоит за последней строкой.
...
Рейтинг: 0 / 0
SCAN и RLOCK
    #33552967
1ndig0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все оказалось верно. Спасибо, уже исправил.
...
Рейтинг: 0 / 0
SCAN и RLOCK
    #33553143
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу блокировки. В этом не могу оразобраться.

Как правильно делать блокировку таблицы когда к ней обращаються несколько пользователей для записи данных?
...
Рейтинг: 0 / 0
SCAN и RLOCK
    #33553686
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Недоходящий!

Правильно - НИКАК не делать НИКАКИХ блокировок.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
SCAN и RLOCK
    #33555516
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Igor Korolyov

А как тогда защитить DBF от одновременной записи одинаковых значений от разных пользователей ?
...
Рейтинг: 0 / 0
SCAN и RLOCK
    #33555815
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НедоходящийА как тогда защитить DBF от одновременной записи одинаковых значений от разных пользователей ?
Специально ничего защищать не надо.

Одновременная запись в одно и то же место двух разных пользователей физически невозможна. За этим следит сама операционная система. Т.е., хотя со стороны кажется, что два пользователя одновременно записали данные в одно и то же место, но реально они записали эти данные по очереди. Сначала один, потом другой.

У программиста другая задача: разрешение конфликтов совместного доступа.

Т.е. программист должен каким-то образом отследить тот факт, что два разных пользователя собираются редактировать одни и те же данные.

Тут возможны 2 принципиальных подхода:

1) Как только первый пользователь начал вносить изменения, на соответствующие данные устанавливается блокировка и никакой другой пользователь уже не в состоянии редактировать те же самые данные, пока первый пользователь не завершит редактирование. Пусть даже он ушел на обед и не вернулся...

Это схема пессимистической буферизации.

2) Пользователь редактирует не сами исходные данные, а некую их копию. Запись (и блокировка) происходят только в момент сброса изменений в исходную таблицу. Перед сбросом анализируется тот факт, что за то время, пока происходило редактирование другой пользователь не внес свои изменения.

Это схема оптимистической буферизации.

При этом, если работа происходит именно в режиме буферизации, а не через "ручное" накладывание и снятие блокировок (RLOCK()/UNLOCK), то все установки и снятие блоикровок будут происходить автоматически. Специально следить за блокировками не надо.
...
Рейтинг: 0 / 0
SCAN и RLOCK
    #33556455
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ВладимирМ
Спасибо. Буду разбираться с этими способами
...
Рейтинг: 0 / 0
SCAN и RLOCK
    #33562061
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Недоходящий!

Оставить управление блокировками фоксу :) Он прекрасно сам справится - ты
просто используй нормальные схемы - в частности короткие транзакции (не
схему с BEGIN TRANSACTION ... MESSAGEBOX() ... END TRANSACTION).
Есть правда ряд задач, когда блокировки лучше самому накладывать (в
частности для предотвращения тупиков в случае наличия транзакций
затрагивающих большое количество таблиц) - но это очень специфичные задачи,
и вряд ли когда ты с ними столкнёшься.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
SCAN и RLOCK
    #33562246
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Igor Korolyov

А можжно поподробнее про короткие транзакции. Кок их использовать?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SCAN и RLOCK
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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