@out
В БАС есть 2 фичи:
- Во время выполнения синхронных операций выполняется только один поток и управление не может быть передано в другой, пока не будет вызвана асинхронная.
- Работа с глобальными переменными, работа со списками, циклы являются синхронными(но не получение ресурсов).
Грубо говоря, если в коде нет функции, которая заканчивается на ! sleep(1000)! load("google.com")! и т. д., то она синхронная.
Можно создать список(или таблицу, удобней для данной задачи) и хранить его в глобальной переменной, во время смены его содержимого можно не боятся, что управление перейдет во второй поток, и он нарушит целостность данных.
Вот пример - такой код всегда будет выводить 0, если бы правило 1). не работало, он бы выводил не 0 значение.
testglobalvars.xml
Еще в будущем будет действие "Блокировка Потока" такое как игнорировать ошибки, только оно позволит блокировать кусок кода в котором есть асинхронные функции.