powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / как использовать Lock правильно
26 сообщений из 26, показаны все 2 страниц
как использовать Lock правильно
    #36306170
AndrewQwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
появилась необходимость поставить блокировку на глобаль: простой пример, характеризующий
необходимую функциональность, 2 программы:
1 программа
Код: plaintext
1.
2.
3.
4.
5.
6.
Lock ^TEST
s ^TEST( 1 )= 5 
j ^someprog
h  10 
Lock
q

2 программа (^someprog)
Код: plaintext
1.
2.
s ^TEST( 1 )= 10 
q
проблема в том, что значение 10 должно записаться, когда блокировку снимет первая программа, специально выставлена пауза в 10 секунд чтоб наблюдать изменения значений в глобали, но цифра 10 записывается еще до снятия блокировки. Подскажите как правильно реализовать нужную функциональность.
Спасибо
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36306246
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewQwer , запись данных никак не зависит от состояния блокировки...

Твою задачку можно реализовать например так.

Код: plaintext
1.
2.
3.
4.
5.
L +^TEST
s ^TEST( 1 )= 5 
j ^someprog
h  10 
L -^TEST
q

Код: plaintext
1.
2.
3.
4.
5.
do {
   l +^TEST: 0 
} while '$t
s ^TEST( 1 )= 10 
l -^TEST
q
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36306326
AndrewQwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
первую часть понял, ставим блокировку с +, а вторую можно немного объяснить? чет не понимаю принцип
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36306381
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во второй части,
в цикле устанавливается блокировка с ожиданием 0, т.е. если блокировка сразу не удалась, то выходим, если блокировка не установилась, то $test будет 0, соответственно цикл не завершится пока не установится блокировка

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36306433
AndrewQwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь, буду внедрять :)
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36306755
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ставить блокировку без таймаута опасненько - IMXO.

А так - после выполнения lock - нужно обязательно анализировать $test
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36308211
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы посоветовал обратить внимание на механизм передачи сообщений через почтовый ящик, или использование семафоров. Есть и еще ряд методов синхронизации.
Механизм блокировки самый простой, но не всегда самый удобный.
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36308229
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKB , примеры бы показал... А то заинтриговал и все.
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36311797
AndrewQwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, хотя бы пару примерчиков по организации блокировок различными средствами..
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36311893
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewQwer , собственно про блокировку мы тебе написали... А тут, как я понял, другие способы реализации контроля "занятости" нужного тебе "элемента"...
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36311986
AndrewQwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa , вот хотелось бы тоже узнать про контроль занятости чего нить нового. Способ описаный выше вроде как хорошо работает, не жалуюсь :)
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36312434
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewQwer,

Я упомянул не о контроле занятости ресурса, в данном случае с использованием команды Lock, а о способе синхронизации процессов через почтовый ящик.
The %SYSTEM.Event class provides an interface to the Cache Event API.
%SYSTEM.Event class достаточно хорошо описан в документации по классам Cache, вот если бы все классы так описывались.
Пример Вам может ничем и не поможет, если Вы не знакомы с подобным способом общения между процессами, к тому же, все очень тесно будет привязано к решаемым Вами задачам.
Если Вам действительно нужен пример, то я Вам его предоставлю, возьму со своих проектов, уберу все лишнее что может Вас запутать и выложу. Просто сейчас очень занят, если потерпите какое-то время, то я выложу.
Если же Вам знаком подобный механизм, то из описания класса Вы все поймете.

Просто я указал что такой механизм в Cache существует, не все могли об этом знать.
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36312442
AndrewQwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexKB , когда у вас будет достаточно времени было бы неплохо глянуть примерчик, для самообразования любая информация полезна. Спасибо.
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36720808
CEH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKB меня тоже интересует такой метод контроля ресурсами. Можно ли увидеть пример?
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36765261
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa
Код: plaintext
1.
2.
do {
   l +^TEST: 0 
} while '$t

Я правильно понимаю, что предлагается долбиться Lock'ом в цикле, пока не пройдет?
С ожиданием 0. Вы это серьезно?
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36765710
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei Obrastsov , а это уже как ты сам пожелаешь...

P.S. Поговаривают один программер помер в душе от истощения, прочитав инструкцию на шампуне:
1. Нанести
2. Намылить
3. Смыть
4. Повторить
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36765774
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei Obrastsovkrvsa
Код: plaintext
1.
2.
do {
   l +^TEST: 0 
} while '$t

Я правильно понимаю, что предлагается долбиться Lock'ом в цикле, пока не пройдет?
С ожиданием 0. Вы это серьезно?]

смысл в использовании ожидания, что вы можете по желанию прервать работу и попробовать позже, когда это будет возможно

можно конечно не использовать ожидания, тогда программа зависнет ожидая освобождения блокировки, а вот это уже может быть не желательным
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36765783
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько понимаю, возражение вызвало время ожидания = 0. Стоит ли грузить [одно из ядер] CPU на 100%?
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36765801
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так в чем проблема, добавив в этом цикле задержку hang 0.1, ну или там своим потребностям, можно уже не так волноваться о процессоре
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36765910
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovСтоит ли грузить [одно из ядер] CPU на 100%?
Уж чего точно не стоит делать, так это сурово обсуждать пример-иллюстрацию работы блокировки.

Поскольку там неболее чем через 10 секунд первый процесс снимет блокировку и "позволит" второму выполнить несложные действия с глобалом.

Если кому-то сей тестовый пример кажется дюже энерго затратным - дайте свой вариант, на нём и остановимся.
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36767491
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorсмысл в использовании ожидания, что вы можете по желанию прервать работу и попробовать позже, когда это будет возможно

можно конечно не использовать ожидания, тогда программа зависнет ожидая освобождения блокировки, а вот это уже может быть не желательным
Я вообще-то догадался для чего используется ожидание.
Советую прикинуть, сколько раз выполнится за 10 секунд этот блок.
И подумать.
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36767492
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaУж чего точно не стоит делать, так это сурово обсуждать пример-иллюстрацию работы блокировки.

Поскольку там неболее чем через 10 секунд первый процесс снимет блокировку и "позволит" второму выполнить несложные действия с глобалом.

Это всего лишь иллюстрация подхода к программированию. Очень даже симптоматично и
в духе времени.
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36767615
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei Obrastsov , твой пример так и не увидим?
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36767694
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Sergei Obrastsov , твой пример так и не увидим?
Простите, он разве не очевиден?

Код: plaintext
1.
2.
lock +^TEST: 10  else  quit
...
...
Рейтинг: 0 / 0
как использовать Lock правильно
    #36768040
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну теперь-то все встало на свои места!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
как использовать Lock правильно
    #38137533
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewQwer AlexKB , когда у вас будет достаточно времени было бы неплохо глянуть примерчик, для самообразования любая информация полезна. Спасибо.CEHAlexKB меня тоже интересует такой метод контроля ресурсами. Можно ли увидеть пример? Синхронизация процессов при распараллеливании задачи средствами Caché Event API
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / как использовать Lock правильно
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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