Size: a a a

Clojure — русскоговорящее сообщество

2019 July 22

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
Господа, поругайте конструктивно: https://gist.github.com/dottedmag/f38b25718cb151b81ed429312092546b
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
Не протокол, для которого это извращение, а само извращение.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Мне кажется, можно и одной структурой данных обойтись?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Gusarov
Господа, поругайте конструктивно: https://gist.github.com/dottedmag/f38b25718cb151b81ed429312092546b
надо проверять, будет ли atom работать как ожидается при конкурентных запросах на аллокацию ресурса
так как a) фукция в swap! может выполниться более одного раза b) что-то ещё, но не смог сформулировать

на моей практике атомы не заработали в качестве строгого средства синхронизации изменений ресурса в многопоточной среде

так что я бы тестировал такое аккуратно
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
> на моей практике атомы не заработали в качестве строгого средства синхронизации изменений ресурса в многопоточной среде

🙂
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Mikhail Gusarov
Господа, поругайте конструктивно: https://gist.github.com/dottedmag/f38b25718cb151b81ed429312092546b
Глобальный стейт!
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
мне кажется конкурентно будет работать нормально, но не помешал бы тест
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
запускаешь 2 треда с alloc и разными задержками, и смотришь что в итоге
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
Sergey Trofimov
надо проверять, будет ли atom работать как ожидается при конкурентных запросах на аллокацию ресурса
так как a) фукция в swap! может выполниться более одного раза b) что-то ещё, но не смог сформулировать

на моей практике атомы не заработали в качестве строгого средства синхронизации изменений ресурса в многопоточной среде

так что я бы тестировал такое аккуратно
хм, да это же полностью конфликтует с тем, зачем они11010101 (в теории)
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
@igrishaev Можно и с одной, но тогда in-use надо считать каждый раз.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
не полностью
но
https://clojure.org/reference/atoms
«Since another thread may have changed the value in the intervening time, it may have to retry, and does so in a spin loop. The net effect is that the value will always be the result of the application of the supplied function to a current value, atomically. However, because the function might be called multiple times, it must be free of side effects.»
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
и «Atoms are an efficient way to represent some state that will never need to be coordinated with any other, and for which you wish to make synchronous changes»
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
и?
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
@strofimov1972 Можно представить, что это внутри стейта соединения.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
с агентами у меня тоже ничего не получилось, пришлось делать synchronized
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
ну это у тебя не получилось, можешь показать код и мы тут попытаемся понять почему
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
где в конкретно этом код необходимость синхронизации с другими стейтами или сайд эффекты внутри или что-то еще?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Gusarov
@strofimov1972 Можно представить, что это внутри стейта соединения.
можно представить всё, что угодно
я просто предупредил, что атом для синхронизации нужно проверять, работает ли он так, как думает программист
я вот думал одно, а по факту получилось то, что получилось
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrew Rudenko
ну это у тебя не получилось, можешь показать код и мы тут попытаемся понять почему
нет
если у вас всё работает, то и хорошо
но для проверки, что всё работает, я рекомендую явно запускать несколько конкурирующих тредов, чтобы они потолкались
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Sergey Trofimov
нет
если у вас всё работает, то и хорошо
но для проверки, что всё работает, я рекомендую явно запускать несколько конкурирующих тредов, чтобы они потолкались
да
источник