Size: a a a

Scala User Group

2021 August 26

AS

Artem Sokolov in Scala User Group
хотя в целом сейчас подумал что если сделать exclusive shared как выше скидывали, и сделать его на max long, и саму блокировку делать на пустой операции а не на той которую запускаю - то да, будет очень похоже
источник

S

Simon in Scala User Group
Не могли же они написать "Да, мы видели те бенчмарки. Нет, мы не бдем делать как в котах, потому что коты сломаны - вот пример". Пришлось растекаться мысью по древу
источник

ZM

ZLoyer Matveev in Scala User Group
все равно пруфов никто не пишет на конкурентный код

одну багу нашли, еще 5 не нашли

скала не сильно то ушла от жаваскрипта в помощи разработчику в конкурентном коде
источник

S

Simon in Scala User Group
Проблема с "закрытием". Если операция закрытия должан дожидаться всех уже работающих внутри барьера, то семафор с "бесконечно много пермитов" - идеальное решение.
источник

AS

Artem Sokolov in Scala User Group
наоборот не должен
источник

S

Simon in Scala User Group
Тогда не понятен его смысл. Если кто-то уже вошел, то он продолжит работу с уже закрытым барьером. Зачем такой барьер может понадобиться?
источник

AS

Artem Sokolov in Scala User Group
чтобы приостановить входящий поток
источник

S

Simon in Scala User Group
гм... сигнал?
источник

λ

λoλdog in Scala User Group
Ну и сделай latch на stm
источник

S

Simon in Scala User Group
Ref с событиями на изменение
источник

AS

Artem Sokolov in Scala User Group
а есть такой? в зио?
источник

AS

Artem Sokolov in Scala User Group
условно самое семантически близкое было бы сделать
isOpenRef :Ref[Boolean]
но не понятно как сделать isPausedRef.await(isOpen => isOpen) . который если в условии true - идет дальше, если false - "подписывается" на изменения ref и перевычисляет на каждое изменение, пока не получит true и не пойдет дальше
вот нету у рефов такой штуки
источник

S

Simon in Scala User Group
есть, ищу
источник

λ

λoλdog in Scala User Group
TRef
источник

AS

Artem Sokolov in Scala User Group
хм, stm...
источник

S

Simon in Scala User Group
Бредовое решение: взять ZHub буленов с размером 1 и ждать на нем true.
Чтоб заблокировать - пушнуть false
Разблокировать - пушнуть true
источник

λ

λoλdog in Scala User Group
Ух
источник

λ

λoλdog in Scala User Group
Ну с tref такая же почти Истрия
источник

λ

λoλdog in Scala User Group
Делать get.collect
источник

S

Simon in Scala User Group
Но вообще Ref[Option[Promise[Unit]]] обернуть во что-то и будет не хуже =)
источник