README.md

    autumn-synchronized

    Модуль ОСени для синхронизации исполнения методов желудей

    Использование

    Допустим в вашем желуде есть какой-то критичный участок кода, который не должен исполнятся параллельно, и вы хотите сделать его потокобезопасным

    // МойЖелудь.os
    
    Процедура МойВажныйКод() Экспорт
        // Потокоопасный код
    КонецПроцедуры
    
    

    Что-бы сделать его потокобезопасным нужно создавать Блокировку, корректно блокировать и разблокировать участки кода:

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

    И вот чтобы не писать весь этот бойлерплейт вам поможет данный модуль, нужно добавить всего лишь аннотацию Синхронизировано и ваш метод магическим образом становится потокобезопасным!

    // МойЖелудь.os
    
    &Синхронизировано
    Процедура МойВажныйКод() Экспорт
        // Потокоопасный код
    КонецПроцедуры
    
    
    Конвейеры
    0 успешных
    0 с ошибкой