Модуль ОСени для синхронизации исполнения методов желудей
Допустим в вашем желуде есть какой-то критичный участок кода, который не должен исполнятся параллельно, и вы хотите сделать его потокобезопасным
// МойЖелудь.os
Процедура МойВажныйКод() Экспорт
// Потокоопасный код
КонецПроцедуры
Что-бы сделать его потокобезопасным нужно создавать Блокировку, корректно блокировать и разблокировать участки кода:
// МойЖелудь.os
Перем Блокировка;
Процедура МойВажныйКод() Экспорт
Блокировка.Заблокировать();
Попытка
// Потокоопасный код
Исключение
Блокировка.Разблокировать();
ВызватьИсключение ИнформацияОбОшибке().ПодробноеОписаниеОшибки();
КонецПопытки;
Блокировка.Разблокировать();
КонецПроцедуры
Блокировка = Новый БлокировкаРесурса();
И вот чтобы не писать весь этот бойлерплейт вам поможет данный модуль, нужно добавить всего лишь аннотацию Синхронизировано
и ваш метод магическим образом становится потокобезопасным!
// МойЖелудь.os
&Синхронизировано
Процедура МойВажныйКод() Экспорт
// Потокоопасный код
КонецПроцедуры