Skip to content

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

License

Notifications You must be signed in to change notification settings

autumn-library/autumn-synchronized

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

autumn-synchronized

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

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

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

// МойЖелудь.os

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

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

// МойЖелудь.os

Перем Блокировка;

Процедура МойВажныйКод() Экспорт

    Блокировка.Заблокировать();

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

    Блокировка.Разблокировать();

КонецПроцедуры

Блокировка = Новый БлокировкаРесурса();

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

// МойЖелудь.os

&Синхронизировано
Процедура МойВажныйКод() Экспорт
    // Потокоопасный код
КонецПроцедуры

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published