@proelixir

Страница 836 из 1045
عاصم بن حارث
25.12.2017
11:16:06
?

Evgeny
25.12.2017
11:16:38
да там чувак из зала заявил, что в эликсире никак низзя сделать race condition

Alexey
25.12.2017
11:16:39
Alex
25.12.2017
11:16:49
так любое же несинхронизированное взаимодействие

Google
Evgeny
25.12.2017
11:16:54
аха

Alexey
25.12.2017
11:17:06
ну так сделай кривой дизайн

Evgeny
25.12.2017
11:17:10
можно счетчик в генсервер засунуть и устроить RC

Alexey
25.12.2017
11:17:23
в ерланге возможно все! если ты хочешь. даже рейз кондишен

Evgeny
25.12.2017
11:17:40
везде можно все

Alexey
25.12.2017
11:17:56
ты еще здесь?

Evgeny
25.12.2017
11:18:08
даже в хаскеле

Taras ?
25.12.2017
11:18:23
Alexey
25.12.2017
11:18:40
если не дунуть, то и ерланг не зайдет

Taras ?
25.12.2017
11:19:01
зашел)

Evgeny
25.12.2017
11:19:16
на самом деле достаточно просто не уметь конкурентность и можно накосячить в генсервере и будет RC

عاصم بن حارث
25.12.2017
11:19:20
если не дунуть - чуда не произойдет! ))
не, не, не... Сим-салябим нужно! )))

Alexey
25.12.2017
11:19:23
https://habrahabr.ru/post/281737/#comment_9734722

Google
Alexey
25.12.2017
11:19:35
зашел)
но со стороны всегда кажется, что ты дунул

да там чувак из зала заявил, что в эликсире никак низзя сделать race condition
речь была о том, что есть дизайн языка и отп. согласно которым надо писать приложения.

Evgeny
25.12.2017
11:21:57
дизайн языка и OTP тут не причем

просто неверная работа с состоянием и упс

Alexey
25.12.2017
11:22:43
а если надо сделать херню, то ты всегда можешь начать пересылать списки из миллиона элементов между процессами, вызывать ГС из ГС и динамически формировать атомы из строк

просто неверная работа с состоянием и упс
наверное сейчас я должен начать переубеждать в чем то

Evgeny
25.12.2017
11:23:09
да нет, нет там никаких гигантских списков

Alexey
25.12.2017
11:23:11
мне книжку подарили, и я доволен

Evgeny
25.12.2017
11:23:14
ща приведу пример

Пишем генсервер у которого состояние счетчик - целое. и два обработчика - один читает счетчик, другой пишет. Два процесса параллельно читают счетчик, добавляют к нему единицу и пишут обратно. В данном случае вероятна ситуация, когда после всего этого счетчик будет увеличен на единицу, а не на два, как ожидается.

Taras ?
25.12.2017
11:25:38
но со стороны всегда кажется, что ты дунул
это смотря с какой стороны посмотреть)

Evgeny
25.12.2017
11:26:28
две функции increment и decrement

handle_call(:increment....

Alexey
25.12.2017
11:27:10
а вторая тоже call?

Evgeny
25.12.2017
11:27:17
ага

Alexey
25.12.2017
11:27:36
ну и. каким образом оно испортится, если они будут последовательно выполнены?

Alex
25.12.2017
11:28:06
а как именно "последовательно"?

عاصم بن حارث
25.12.2017
11:28:11
_cast ... _call все дело в волшебных пузырьках ))) (с)Швэпс-с-с...

Alexey
25.12.2017
11:28:32
либо тут явное не понимание того, как ГС работает

Google
Evgeny
25.12.2017
11:28:37
легко, первый процесс читает и второй сразу за ним. оба прочитают одинаковое значение - n, после чего оба друг за другом пишут n + 1

Alexey
25.12.2017
11:28:48
либо предлагается считать значение из ГС, в своем процессе изменить и записать обратно

Evgeny
25.12.2017
11:28:51
такое вполне вероятно

Alex
25.12.2017
11:28:53
две функции increment и decrement
вот это, кстати, как раз не работает

Alex
25.12.2017
11:29:12
это абсолютно сериализованный доступ

Dorzhi
25.12.2017
11:29:25
это ж пример из shared-memory языков

Alexey
25.12.2017
11:29:37
о том, как работают ГСы. и на основе чего

Dorzhi
25.12.2017
11:29:55
в джаве такое раз плюнуть

Evgeny
25.12.2017
11:30:01
Alex
25.12.2017
11:30:02
а вот если у тебя в интерфейсе get и put - вот тут можно сделать RC

Alexey
25.12.2017
11:30:31
вот да. если ты в левом процессе сделал гет. прибавил и сделал put, то да

но это по дизайну ССЗБ

Alex
25.12.2017
11:30:48
почему не работает?
потому что твои ++ и — выполняются последовательно в контексте ГС

Evgeny
25.12.2017
11:30:49
понятно, что это ошибка, но получается RC.

Alexey
25.12.2017
11:31:40
ну это типа как я взял си, и за пределами массива данные записал

Alex
25.12.2017
11:31:43
Evgeny
25.12.2017
11:32:32
ну это типа как я взял си, и за пределами массива данные записал
я так не думаю, в си за предели массива - это undefined behaviour, а тут вполне себе ясно что происходит

Google
Alexey
25.12.2017
11:32:48
понятно, что это ошибка, но получается RC.
ну то есть, ты понимаешь, что это не правильно, и все равно так делаешь?

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

Evgeny
25.12.2017
11:33:15
ну то есть, ты понимаешь, что это не правильно, и все равно так делаешь?
Я так разве делаю? Это было к вопросу о принципиальной возможности сделать RC в эликсире

Alexey
25.12.2017
11:33:20
но когда ты сам дизайнишь приложение таким образом, то это твоя ошибка, а не ОТП

тут принципиальное буквоедство, как я понял

Evgeny
25.12.2017
11:33:54
Я-то так никогда не сделаю ибо собаку съел на мьютаксах и прочем синхронизационном говне

Alexey
25.12.2017
11:33:59
был у меня коллега один

он как-то привязался к тому, что я назвал функции - чистыми

а они не чистые!

Admin
ERROR: S client not available

Evgeny
25.12.2017
11:34:21
:)

Alexey
25.12.2017
11:34:23
они побочные эффекты имеют

Evgeny
25.12.2017
11:34:28
Не я не буквоед

Alexey
25.12.2017
11:34:47
как так то бля? я вот смотрю на текст функции. и у меня в мозгу нейронная БД меняется. всё! побочный эффект

Evgeny
25.12.2017
11:34:51
но зачем называть чистыми нечистые функции??? ?

Alexey
25.12.2017
11:35:16
ты буквоед

приходи, пожалуйста, на доклады Гошников

и задавай вопросы

Evgeny
25.12.2017
11:35:49
Зачем?

Alexey
25.12.2017
11:35:55
о том, как они с рейсами справляются

Google
Alex
25.12.2017
11:36:35
да так же - сериализация посредством каналов

Alexey
25.12.2017
11:36:37
Я так разве делаю? Это было к вопросу о принципиальной возможности сделать RC в эликсире
в общем, если ты целенаправленно RC не делаешь, то у тебя его и не будет

Evgeny
25.12.2017
11:36:41
Просто там на конфе докладчик по эликсиру сказал, что RC могут быть в бизнес логике, а мужик из зала заявил, что это невозможно. Ну мне немного стало обидно за докладчика

Evgeny
25.12.2017
11:37:19
А, вот почему ты обиделся :)

Alexey
25.12.2017
11:37:23
но да. согласен. был не прав

если ты хочешь, чтоб было, то можешь сделать

я не обиделся

просто там парни сидят с нулем знаний вообще

Evgeny
25.12.2017
11:38:01
Правильный ответ: в эликсире намного сложнее сделать RC, чем например в D

Alex
25.12.2017
11:38:05
Alexey
25.12.2017
11:38:09
и им так с порога "тут хз от куда могу произойти рейз кондишены"

Evgeny
25.12.2017
11:39:10
хз откуда ни в каком языке не могут

Alexey
25.12.2017
11:39:11
никто не знает, от куда они берутся, но происходят. даже если не хочешь

и тут бы я может быть сказал бы, что у меня RC никогда не было

но потом, возможно, пришлось бы пояснять, сколько я с ерлангом и эликсиром работаю, в проде ли. показать свои шедевры и так далее

а иначе ведь не убедительно будет

Evgeny
25.12.2017
11:40:45
У меня тоже, я в многопоточье сразу все синхронизирою, а вот дедлоки бывали

в эликсире я пока только один способ дедлока знаю, надеюсь он один-единственный

Alexey
25.12.2017
11:42:42
какой?

Alex
25.12.2017
11:43:31
какой?
два gen_server:call(...., infinity) друг к другу

Страница 836 из 1045