Size: a a a

Scala User Group

2020 December 19

N

Nikolay in Scala User Group
акторы это получается система с лидером. если есть лидер, то можно сделать total order
источник

S

Simon in Scala User Group
RSN
fs2.Stream + Ref
есть пример как там обеспечить happens before на метабельной структуре данных?
то, что я сделал было слишьком колхозно - актор и то лучше выглядел.
источник

R

RSN in Scala User Group
Simon
есть пример как там обеспечить happens before на метабельной структуре данных?
то, что я сделал было слишьком колхозно - актор и то лучше выглядел.
Не надо в Ref использовать мутабельную, используй иммьютабл
источник

S

Simon in Scala User Group
RSN
Не надо в Ref использовать мутабельную, используй иммьютабл
Мышки, станьте ёжиками...
Я сразу написал, что на неизменяемую структуру переделать не получится - в память не влезет.
источник

EB

Eugene Bosiakov in Scala User Group
Я не понимаю, а что плохого если сделать это написав synchronized и импортнув мутабельный лист
источник

R

RSN in Scala User Group
Simon
Мышки, станьте ёжиками...
Я сразу написал, что на неизменяемую структуру переделать не получится - в память не влезет.
Проверял?
источник

S

Simon in Scala User Group
RSN
Проверял?
Да.
источник

S

Simon in Scala User Group
Eugene Bosiakov
Я не понимаю, а что плохого если сделать это написав synchronized и импортнув мутабельный лист
Можно, но даже акторы у моих тараканов выше котируются.
источник

EB

Eugene Bosiakov in Scala User Group
Simon
Можно, но даже акторы у моих тараканов выше котируются.
где котируются
источник

AS

Artem Sokolov in Scala User Group
Simon
есть пример как там обеспечить happens before на метабельной структуре данных?
то, что я сделал было слишьком колхозно - актор и то лучше выглядел.
Еще бы понять hp между чем и чем вам нужно
источник

AS

Artem Sokolov in Scala User Group
Simon
и как? update нельзя - не гарантируется однократность
Ref вообще не предназначен для мутабельных структур
А уверены что в акторах гарантируется exactly once и все остальное что вам надо?
источник

S

Simon in Scala User Group
Artem Sokolov
А уверены что в акторах гарантируется exactly once и все остальное что вам надо?
Актор у меня локальный + ask. Так что там at most once + если оно когда-нибудь таки не дойдет - я узнаю.
источник

S

Simon in Scala User Group
Artem Sokolov
Еще бы понять hp между чем и чем вам нужно
Между записями в массив. Чтоб одна запись не перетерла соседние элементы от другой.
источник

λ

λoλdog in Scala User Group
А матрица заранее аллоцируется?
источник

S

Simon in Scala User Group
λoλdog
А матрица заранее аллоцируется?
да
источник

λ

λoλdog in Scala User Group
ну тогда тебе точно ref не нужен, любое изменение матрицы это IO и нужен простой семафор
источник

λ

λoλdog in Scala User Group
Если у тебя зио, то даже не семафор а TReentrantLock
источник

S

Simon in Scala User Group
Вопрос в том что подразумеваем под семафором.
Если из java.util.concurrent, то я не хочу заморачиваться с блокировками и лучше сделаю на акторе
Если, например, из zio, то там нет ничего про happens before в доке.
источник

λ

λoλdog in Scala User Group
или вообще можно взять какой-нибудь TMap и в качестве ключа использовать индекс ячеики, которая обновляется, в качестве значения какой-нибудь TReentrantLock и лочить ячеику когда делаешь апдейт, а когда закончил убирать лок
источник

S

Simon in Scala User Group
Оно может быть и работает (прямо сейчас на каком-то железе), но контракты описаны не в терминах jmm и меня это печалит.
В акотрах все просто: happens before между обработкой сообщений.
источник