|
|
#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). | |