![]() |
#22 |
Участник
|
Попробуйте класс ReqReaderWriterLock
Можно проверить, заблокирована ли конкретная запись. Если не заблокирована, то заблокировать ее и обработать. Если заблокирована, то пропустить её и начать обрабатывать следующую запись. В качестве ключа в параметр _lockName метода tryEnterWriterLock передать уникальную строку, которая каким-то образом идентифицирует обрабатываемую запись. X++: ReqReaderWriterLock lockCleanup = ReqReaderWriterLock::construct(); while select myTable { if (lockCleanup.tryEnterWriterLock(int642str(myTable.RecId), 0)) // Блокируем, а если кем-то уже заблокировано, то обходим { ttsbegin; myTableUpd = MyTable::findRecId(myTable.RecId, true); //..................... myTableUpd.update(); ttscommit; } } lockCleanup.releaseAllLocks();
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ Последний раз редактировалось Ace of Database; 17.02.2023 в 16:56. |
|
|
За это сообщение автора поблагодарили: sukhanchik (10). |