Re[9]: Эрланг и все-все-все (на самом деле, не совсем)
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.06.15 13:46
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Во-первых, ты утвердаешь, что ничего, кроме мьютексов нет. Это не так. Второе. Мне интересно, сколько времени у тебя уйдет на реализацию http://learnyousomeerlang.com/supervisors когда все, что у тебя предлагает язык, — это мьютексы.


M>А так да. Читать в этом топике умеют единицы, потому что обо всем этом я уже написал.


Точнее аргументы у тебя говно. neFormal, Синклер и тд уже нескольким показывали, где ошибка в том подходе, что у Elazin, у них получилось.
А вот ты продолжаешь "куридопосинения" и "неумеешьчитать"
Re[9]: Эрланг и все-все-все (на самом деле, не совсем)
От: ELazin http://rsdn.ru/forum/prj/6225353.1
Автор: ELazin
Дата: 26.10.15
Дата: 30.06.15 13:52
Оценка:
M>А так да. Читать в этом топике умеют единицы, потому что обо всем этом я уже написал.
Ты видимо не входишь в их число, так как я не утверждал что кроме мьютексов ничего нет.
M>Во-первых, ты утвердаешь, что ничего, кроме мьютексов нет.

M>Во-первых, ты утвердаешь, что ничего, кроме мьютексов нет. Это не так. Второе. Мне интересно, сколько времени у тебя уйдет на реализацию http://learnyousomeerlang.com/supervisors когда все, что у тебя предлагает язык, — это мьютексы.


Во первых, я предложил реализовать какой-нибудь параллельный алгоритм (на erlang-е же можно их писать, да?), а не часть erlang-а. Слабо написать параллельный счетчик например, ну или CM-sketch? Мне не очевидно, что erlang может быть полезен для решения параллельных задач, с которыми мне приходилось сталкиваться в реальной жизни. Слабо верится что с его помощью можно даже простые статистические свойства потока сообщений приходящих на сервер оценить, я уже молчу о какой-нибудь более сложной обработке.

Во вторых, твои любимые супервайзеры имеют смысл только в языке с теми же свойствами что и erlang, процесс упал, мы его рестартанули и все, процесс продолжил потреблять очередь. В языке с общей памятью таск может упасть не из-за того что лежит в очереди а из-за того что лежит в этой самой общей памяти. Принцип let it fail тут применять не принято. В общем, вижу это как продолжение слива, решил предложить то что никто не возьмется делать и то что в erlang-е уже есть.
Re[6]: Эрланг и все-все-все (на самом деле, не совсем)
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.06.15 13:55
Оценка:
Здравствуйте, ELazin, Вы писали:

EL>Не мьютексы сами по себе, а масштабируемые алгоритмы на них построенные. Сами мьютексы тоже не так просты как кажутся. В операционной системе тоже есть шедулер, прямо как в Erlang-е, который умеет шедулить потоки (которые прямо как Erlang-овские зеленые потоки в некотором смысле). Так вот, этот шедулер знает о том какие потоки блокируют друг друга, он знает приоритеты потоков и умеет их менять динамически, чтобы быстрее реагировать на ввод/вывод, он умеет отдавать квант времени другому потоку, если первый ждет чего-нибудь, на него завязан механизм RCU и механизм предотвращения инверсии приоритетов (random boosting в винде и priority inheritence в linux). В общем, мьютекс это довольно клево и интересно. Чтобы это понять, достаточно попробовать запилить что-нибудь нетривиальное на потоках/мьютексах/общей памяти и на сообщениях.


Мамут в каждом сообщении подразумевает масштабируемость, распределенность и тд. С мутексами всё в порядке до тех пор, пока не понадобится масштабируемость.

Именно это он имеет ввиду, когда дает ссылку на дерево супервизоров.

EL>Ну и вообще, сообщения vs локи это ложная дихотомия, ибо операции с мьютексом можно рассматривать как отправку сообщения другому потоку.


Да, все правильно. Дело не в сообщениях, а в том, кто обеспечивает корректность состояния. С мутексами у тебя этим занят каждый из потоков.
Сообщения это никакие не сообщения, а агенты. Просто у мамута такая терминология — каждое слово чтото значит, только он забывает сказать, какое слово в каком смысле употребляет. Каждый агент обеспечивает корректность своего состояния, и никто, кроме него, это состояние не видит.

Вот здесь подробнее
http://adit.io/posts/2013-05-15-Locks,-Actors,-And-STM-In-Pictures.html

P.S. Мамут объясняет "для себя", отсюда и его "неумеютчитать".."куридопосинения"
Re[10]: Эрланг и все-все-все (на самом деле, не совсем)
От: Mamut Швеция http://dmitriid.com
Дата: 30.06.15 14:00
Оценка:
EL>Во первых, я предложил реализовать какой-нибудь параллельный алгоритм (на erlang-е же можно их писать, да?), а не часть erlang-а. Слабо написать параллельный счетчик например, ну или CM-sketch? Мне не очевидно, что erlang может быть полезен для решения параллельных задач, с которыми мне приходилось сталкиваться в реальной жизни. Слабо верится что с его помощью можно даже простые статистические свойства потока сообщений приходящих на сервер оценить, я уже молчу о какой-нибудь более сложной обработке.

Реализовать можно, естественно


EL>Во вторых, твои любимые супервайзеры имеют смысл только в языке с теми же свойствами что и erlang, процесс упал, мы его рестартанули и все, процесс продолжил потреблять очередь. В языке с общей памятью таск может упасть не из-за того что лежит в очереди а из-за того что лежит в этой самой общей памяти. Принцип let it fail тут применять не принято. В общем, вижу это как продолжение слива, решил предложить то что никто не возьмется делать и то что в erlang-е уже есть.


Где ты увидел продолжение слива, известно только тебе.

Зачем нужны супервайзоры и прочее, я уже писал. Прикинь. В превом сообщении в этой теме. Потому что каждый первый, кто говорит, что ничего это ненужно на практике занимается (почти цитата) «ну пару catch'ей ручками расставим, не сложно» и прочими ручными реализациями «половины эрланга». В этой подветке
Автор: BulatZiganshin
Дата: 29.06.15
еще Булат хорошо писал.


dmitriid.comGitHubLinkedIn
Re[10]: Эрланг и все-все-все (на самом деле, не совсем)
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.06.15 14:01
Оценка:
Здравствуйте, ELazin, Вы писали:

EL>Во первых, я предложил реализовать какой-нибудь параллельный алгоритм (на erlang-е же можно их писать, да?), а не часть erlang-а. Слабо написать параллельный счетчик например, ну или CM-sketch? Мне не очевидно, что erlang может быть полезен для решения параллельных задач, с которыми мне приходилось сталкиваться в реальной жизни. Слабо верится что с его помощью можно даже простые статистические свойства потока сообщений приходящих на сервер оценить, я уже молчу о какой-нибудь более сложной обработке.


Параллельные алгоритмы для мамута — табу. Скорее всего он тебе ответит "Ага, попался ! Снова — 'я умею создавать 100500 потоков эрланг не нужен' => неумеешьчитать"

EL>Во вторых, твои любимые супервайзеры имеют смысл только в языке с теми же свойствами что и erlang, процесс упал, мы его рестартанули и все, процесс продолжил потреблять очередь. В языке с общей памятью таск может упасть не из-за того что лежит в очереди а из-за того что лежит в этой самой общей памяти. Принцип let it fail тут применять не принято. В общем, вижу это как продолжение слива, решил предложить то что никто не возьмется делать и то что в erlang-е уже есть.


Дело в различных принципах декомпозиции систем. На эрланге скорее всего никогда не возникает "упадёт из-за того что лежит в этой самой общей памяти".

Собтвенно, это одна из причин, почему эрланг мало где применяется. Слишком много ограничений накладывает.
Re[28]: Эрланг и все-все-все (на самом деле, не совсем)
От: alex_public  
Дата: 30.06.15 14:06
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Сколько бы потоков не создавалось, это все упирается в создание X штук неуправляемых потоков. Повторю еще раз: как тебе понадобится что-то чуть более сложное, ты загнешься.


Само собой. Просто в случае малого числа задач, управление этими системными потоками весьма тривиально (собственно просто каждая задача исполняется в своём системном потоке) и соответственно сложная система с кучей оверхеда, предназначенная для работы с тысячами одновременных задач, выглядит в этом случае неуместно.

_>>Т.е. в языке из коробки отсутствует инструмент для реализации подобного многопоточного кода и надо ставить стороннюю библиотеку. Правильно? )

M>

_>>Не, не, я не настаиваю на точно таком виде. Можно пользоваться любыми инструментами языка. Меня интересует всего лишь один простой вопрос: какой объём кода будет у реализации подобной (в смысле результата) многопоточной обработки данных на Эрланге.

M>такой же, если берётся сторонняя библиотека/модуль.
M>и короче, если у плюсов тоже отнять стороннюю библиотеку.


Так в C++ то как раз OpenMP из коробки. Т.е. ты всю эту темку утверждал как всё удобно и классно в Эрланге из коробки, а в C++ надо мучиться с установкой сторонних библиотек. А на данном примере мы увидели, что это Эрлангу надо ставить сторонние библиотеки для реализации элементарной многопоточности, в то время как в C++ данная функциональность как раз имеется из коробки.

M>>>- в случае с plists имеет гибкость: например, можно запустить обработку на другой ноде (которая может быть на другом компьютере)

_>>Это уже не имеет отношения к написанию софта — это скорее вопрос к администраторам. )
M>Это напрямую имеет отношение к написанию софта. Никакой администратор не научит твой openmp находить ноды в сети и запускать код на этих нодах.

А причём тут мой код и такое? ) Распространением софта должны заниматься специлизированные инструменты, уже давно написанные и конфигурируемы админами. Если же ты говоришь про взаимодействие моего софта, при его выполнение на нескольких узлах, то это уже действительно моё дело и оно легко реализуется с помощью MPI (инструмент дополняющий OpenMP и SIMD, для полноценного распараллеливания на всех трёх возможных уровнях).

_>>Ну да, ну да, немного несложного кода... Кстати, а функция get_index где? ) Ты вообще понимаешь, что при таком раскладе она должна быть замыканием, содержащим сам список L? Т.е. ты будешь её каждый раз писать заново? )

M>Возьми структуру данных, в которой реализован доступ по индексу — и вперед

Я не про это. У тебя в get_index передаётся только элемент списка, но не сам список. Соответственно чтобы такой странный код работал, у тебя внутри get_index должна содержаться ссылка на этот конкретный список L.

_>>Ну и если в итоге посмотреть на данный код (для которого надо ещё дописать функции и поставить библиотечку) и на мой пример (собираемый стандартной поставкой компилятора), то где у нас в итоге получается закат солнца вручную в следствие слабой реализации многопоточности? )))

M>Действительно. Широкие выводы из умению развернуть цикл в параллельный fold/map.

А это я просто попытался взять пример с тебя) Эрланг же действительно неплох в своей узкой нише. Но ты на основе этого сделал вывод что он хорош вообще в любом многопоточном программирование. Вот и я делаю аналогичные выводы на основе этого примера: Эрланг вообще ничего не может, т.к. тривиальный пример выглядит на нём на порядок страшнее, чем в даже древнем Фортране. Нравится подобный стиль формирования выводов?

M>Именно потому ты так упорно цепляешься строго и исключительно за этот пример, а остальное называешь демагогией.


Я думаю ты знаешь, что в математике наличие даже маленького одиночного контрпримера, полностью опровергают всю предложенную теорию. Так вот реализация данной задачки — это контрпример ко всем твоим размышлениям в первом сообщение темки.
Re[7]: Эрланг и все-все-все (на самом деле, не совсем)
От: ELazin http://rsdn.ru/forum/prj/6225353.1
Автор: ELazin
Дата: 26.10.15
Дата: 30.06.15 14:12
Оценка:
EL>>В общем, мьютекс это довольно клево и интересно. Чтобы это понять, достаточно попробовать запилить что-нибудь нетривиальное на потоках/мьютексах/общей памяти и на сообщениях.
F>а что есть подобного нетривиального?

Я там выше предлагал CM sketch или даже простой параллельный счетчик. Тривиальный параллельный алгоритм, это например embarrassingly parallel задачи, Монте-Карло например, ну или data parallel задачи, это когда данные, с которыми работает процесс, принадлежат этому потоку и никто их больше не трогает. Нетривиальный параллельный алгоритм, это когда данные, к сожалению, не могут принадлежать одному потоку и при этом данные нужно как-нибудь обновлять.
Re[29]: Эрланг и все-все-все (на самом деле, не совсем)
От: Mamut Швеция http://dmitriid.com
Дата: 30.06.15 14:13
Оценка: -2 :)
M>>Сколько бы потоков не создавалось, это все упирается в создание X штук неуправляемых потоков. Повторю еще раз: как тебе понадобится что-то чуть более сложное, ты загнешься.

_>Само собой. Просто в случае малого числа задач, управление этими системными потоками весьма тривиально (собственно просто каждая задача исполняется в своём системном потоке) и соответственно сложная система с кучей оверхеда, предназначенная для работы с тысячами одновременных задач, выглядит в этом случае неуместно.


1. Что там за оверхед, известно только тебе
2. Система, которая позволяет единообразно работать с потоками/процессами — это плохо, ок, я тебя понял

M>>>>- в случае с plists имеет гибкость: например, можно запустить обработку на другой ноде (которая может быть на другом компьютере)

_>>>Это уже не имеет отношения к написанию софта — это скорее вопрос к администраторам. )
M>>Это напрямую имеет отношение к написанию софта. Никакой администратор не научит твой openmp находить ноды в сети и запускать код на этих нодах.

_>А причём тут мой код и такое? ) Распространением софта должны заниматься специлизированные инструменты, уже давно написанные и конфигурируемы админами.


Боже. Ты даже не удосужился попытаться понять, что я говорю /o\ Главное поскорее настрочить ответ!!!

_>Если же ты говоришь про взаимодействие моего софта, при его выполнение на нескольких узлах, то это уже действительно моё дело и оно легко реализуется с помощью MPI (инструмент дополняющий OpenMP и SIMD, для полноценного распараллеливания на всех трёх возможных уровнях).


«Легко», я так предполагаю.

_>>>Ну да, ну да, немного несложного кода... Кстати, а функция get_index где? ) Ты вообще понимаешь, что при таком раскладе она должна быть замыканием, содержащим сам список L? Т.е. ты будешь её каждый раз писать заново? )

M>>Возьми структуру данных, в которой реализован доступ по индексу — и вперед

_>Я не про это. У тебя в get_index передаётся только элемент списка, но не сам список. Соответственно чтобы такой странный код работал, у тебя внутри get_index должна содержаться ссылка на этот конкретный список L.


Действительно, раз нет аргументов, придерись к отдельным кускам кода. Хотя я прямым текстом написал, что в Эрланге не получится сделать точно так же, потому что нет такой же структуры данных. И написал что? Ах, да «предположим, что у нас есть функция get_index». Читать? Понимать написанное? Зачем?!

_>>>Ну и если в итоге посмотреть на данный код (для которого надо ещё дописать функции и поставить библиотечку) и на мой пример (собираемый стандартной поставкой компилятора), то где у нас в итоге получается закат солнца вручную в следствие слабой реализации многопоточности? )))

M>>Действительно. Широкие выводы из умению развернуть цикл в параллельный fold/map.

_>А это я просто попытался взять пример с тебя) Эрланг же действительно неплох в своей узкой нише. Но ты на основе этого сделал вывод что он хорош вообще в любом многопоточном программирование.


Мне еще попрекают, что я обвиняю других в том, что они читать не умеют. А что поделать, если действительно не умеют читать. Вот именно из разряда: вижу текст, пишу ответ по каким-то своим фантазиям, с текстом несвязанным.


dmitriid.comGitHubLinkedIn
Re[7]: Эрланг и все-все-все (на самом деле, не совсем)
От: ELazin http://rsdn.ru/forum/prj/6225353.1
Автор: ELazin
Дата: 26.10.15
Дата: 30.06.15 14:18
Оценка:
I>Мамут в каждом сообщении подразумевает масштабируемость, распределенность и тд. С мутексами всё в порядке до тех пор, пока не понадобится масштабируемость.

Легкость переноса процессов на другие машины вовсе не гарантирует масштабируемость.
Re[7]: Эрланг и все-все-все (на самом деле, не совсем)
От: Mamut Швеция http://dmitriid.com
Дата: 30.06.15 14:21
Оценка:
I>Мамут в каждом сообщении подразумевает масштабируемость, распределенность и тд. С мутексами всё в порядке до тех пор, пока не понадобится масштабируемость.
I>Именно это он имеет ввиду, когда дает ссылку на дерево супервизоров.

Когда я даю ссылку на дерево супервизоров, я имею в виду управление потоками/процессами/задачами в первую очередь.

Заметно, как ты понимаешь, что я пишу, несмотря на максмально простой стиль изложения.


dmitriid.comGitHubLinkedIn
Re[30]: Эрланг и все-все-все (на самом деле, не совсем)
От: alex_public  
Дата: 30.06.15 15:00
Оценка:
Здравствуйте, Mamut, Вы писали:

M>1. Что там за оверхед, известно только тебе


От ненужного кода. Планировщик то никуда не девается, хотя пользы от него тут нет. И т.п.

M>2. Система, которая позволяет единообразно работать с потоками/процессами — это плохо, ок, я тебя понял


В том то и дело, что не позволяет — мы это уже увидели на примере. )

_>>Если же ты говоришь про взаимодействие моего софта, при его выполнение на нескольких узлах, то это уже действительно моё дело и оно легко реализуется с помощью MPI (инструмент дополняющий OpenMP и SIMD, для полноценного распараллеливания на всех трёх возможных уровнях).

M>«Легко», я так предполагаю.

Конечно. Ведь на этой связке (ну плюс ещё CUDA для гетерогенных систем) работает большинство больших вычислительных комплексов.

_>>Я не про это. У тебя в get_index передаётся только элемент списка, но не сам список. Соответственно чтобы такой странный код работал, у тебя внутри get_index должна содержаться ссылка на этот конкретный список L.

M>Действительно, раз нет аргументов, придерись к отдельным кускам кода. Хотя я прямым текстом написал, что в Эрланге не получится сделать точно так же, потому что нет такой же структуры данных. И написал что? Ах, да «предположим, что у нас есть функция get_index». Читать? Понимать написанное? Зачем?!

Ты похоже плохо воспринимаешь текст. ) Я же вроде по русски пишу, что претензия не в проблемах с массивами в Эрланге, а в том, что у тебя тут функции get_index передаётся исключительно элемент X, на основе которого она как-то вычисляет его индекс в списке L (не известном ей). Поясни работу эту функции (предполагая, что допустим структура работающая с индексами у тебя есть). Иначе этот твой код не засчитывается за реализацию.

_>>А это я просто попытался взять пример с тебя) Эрланг же действительно неплох в своей узкой нише. Но ты на основе этого сделал вывод что он хорош вообще в любом многопоточном программирование.

M>Мне еще попрекают, что я обвиняю других в том, что они читать не умеют. А что поделать, если действительно не умеют читать. Вот именно из разряда: вижу текст, пишу ответ по каким-то своим фантазиям, с текстом несвязанным.

Т.е. ты согласен, что Эрланг полезен (и то если скорость разработки важнее расходов на железо) только для узкой ниши высоконагруженных серверов? )
Re[8]: Эрланг и все-все-все (на самом деле, не совсем)
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.06.15 15:18
Оценка:
Здравствуйте, ELazin, Вы писали:

I>>Мамут в каждом сообщении подразумевает масштабируемость, распределенность и тд. С мутексами всё в порядке до тех пор, пока не понадобится масштабируемость.


EL>Легкость переноса процессов на другие машины вовсе не гарантирует масштабируемость.


Да, мамут все время говорит только про ту масштабируемость, которая решается переносом на другую машину
Re[9]: Эрланг и все-все-все (на самом деле, не совсем)
От: Mamut Швеция http://dmitriid.com
Дата: 30.06.15 15:24
Оценка:
I>>>Мамут в каждом сообщении подразумевает масштабируемость, распределенность и тд. С мутексами всё в порядке до тех пор, пока не понадобится масштабируемость.
EL>>Легкость переноса процессов на другие машины вовсе не гарантирует масштабируемость.
I>Да, мамут все время говорит только про ту масштабируемость, которая решается переносом на другую машину

Да уж. УРовень твоего понимания печатного текста просто поражает.


dmitriid.comGitHubLinkedIn
Re[8]: Эрланг и все-все-все (на самом деле, не совсем)
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.06.15 15:26
Оценка:
Здравствуйте, Mamut, Вы писали:

I>>Мамут в каждом сообщении подразумевает масштабируемость, распределенность и тд. С мутексами всё в порядке до тех пор, пока не понадобится масштабируемость.

I>>Именно это он имеет ввиду, когда дает ссылку на дерево супервизоров.

M>Когда я даю ссылку на дерево супервизоров, я имею в виду управление потоками/процессами/задачами в первую очередь.


И когда тебе напоминают про параллельные задачи, ты тут же начинаешь стенать "снова 100500 потоков".
Параллельные задачи это целиком про управление потоками-процессами-задачами.
Скажем, системно-зависимый функционал, он тоже про такое управление. Но внезапно, эрланг уже не может в силу ряда причин — например потому, что в ОС целый вагон блокирующих вызовов из за того, что куча объектов прибито гвоздями к физическому потоку.

Потому правильно говорить например про масштабирование, а не абстрактное управление.

M>Заметно, как ты понимаешь, что я пишу, несмотря на максмально простой стиль изложения.


Я и говорю — ты объясняешь сам себе, потому всё кажется просто.
Re[31]: Эрланг и все-все-все (на самом деле, не совсем)
От: Mamut Швеция http://dmitriid.com
Дата: 30.06.15 15:27
Оценка:
M>>1. Что там за оверхед, известно только тебе
_>От ненужного кода. Планировщик то никуда не девается, хотя пользы от него тут нет. И т.п.

Угу. Сферовакуумный оферхед из твоих фантазий. mmkay.

M>>2. Система, которая позволяет единообразно работать с потоками/процессами — это плохо, ок, я тебя понял

_>В том то и дело, что не позволяет — мы это уже увидели на примере. )

Там решение строго на основе единообразных инструментов, если что. А не в виде «расширения к языку с равным уровнем поддержки в разных компиляторах».

_>>>Если же ты говоришь про взаимодействие моего софта, при его выполнение на нескольких узлах, то это уже действительно моё дело и оно легко реализуется с помощью MPI (инструмент дополняющий OpenMP и SIMD, для полноценного распараллеливания на всех трёх возможных уровнях).

M>>«Легко», я так предполагаю.

_>Конечно. Ведь на этой связке (ну плюс ещё CUDA для гетерогенных систем) работает большинство больших вычислительных комплексов.


Что делать, если у меня не «вычислительный комплекс»? Что, если я хочу просто запустить десяток потоков/процессов? Ах да, я помню. «проще несколько catch'ей ручками расставить», ага

_>Ты похоже плохо воспринимаешь текст. ) Я же вроде по русски пишу, что претензия не в проблемах с массивами в Эрланге, а в том, что у тебя тут функции get_index передаётся исключительно элемент X, на основе которого она как-то вычисляет его индекс в списке L (не известном ей). Поясни работу эту функции (предполагая, что допустим структура работающая с индексами у тебя есть). Иначе этот твой код не засчитывается за реализацию.


/o\ Просто без комментариев. У него, видите ли, претензия к функции, про котороую сразу написано, что она гипотетическая.

_>>>А это я просто попытался взять пример с тебя) Эрланг же действительно неплох в своей узкой нише. Но ты на основе этого сделал вывод что он хорош вообще в любом многопоточном программирование.

M>>Мне еще попрекают, что я обвиняю других в том, что они читать не умеют. А что поделать, если действительно не умеют читать. Вот именно из разряда: вижу текст, пишу ответ по каким-то своим фантазиям, с текстом несвязанным.

_>Т.е. ты согласен, что Эрланг полезен (и то если скорость разработки важнее расходов на железо) только для узкой ниши высоконагруженных серверов? )


Нет.


dmitriid.comGitHubLinkedIn
Re[9]: Эрланг и все-все-все (на самом деле, не совсем)
От: Mamut Швеция http://dmitriid.com
Дата: 30.06.15 15:30
Оценка:
I>>>Мамут в каждом сообщении подразумевает масштабируемость, распределенность и тд. С мутексами всё в порядке до тех пор, пока не понадобится масштабируемость.
I>>>Именно это он имеет ввиду, когда дает ссылку на дерево супервизоров.

M>>Когда я даю ссылку на дерево супервизоров, я имею в виду управление потоками/процессами/задачами в первую очередь.


I>И когда тебе напоминают про параллельные задачи, ты тут же начинаешь стенать "снова 100500 потоков".

I>Параллельные задачи это целиком про управление потоками-процессами-задачами.

Покажи мне, где у alex_public в его примере управление потоками.

I>Скажем, системно-зависимый функционал, он тоже про такое управление. Но внезапно, эрланг уже не может в силу ряда причин — например потому, что в ОС целый вагон блокирующих вызовов из за того, что куча объектов прибито гвоздями к физическому потоку.


Пока что все, что большинство, включая тебя, смогло сказать про управление — это «зачем оно нужно», «не, невозможно», «зачем убивать потоки» и прочее типа «на мьютексах все можно сделать, это как сообщшения»

Хотя, казалось бы, даже без привязки к Эрлангу все было написано в первом же сообщении. Но читать? Думать над написанным? ЗАЧЕМ?!


I>Потому правильно говорить например про масштабирование, а не абстрактное управление.


M>>Заметно, как ты понимаешь, что я пишу, несмотря на максмально простой стиль изложения.

I>Я и говорю — ты объясняешь сам себе, потому всё кажется просто.

Там действительно все просто. Просто ты не делаешь даже попыток понять, что там написано. Плюс зашоренность.


dmitriid.comGitHubLinkedIn
Re[32]: Эрланг и все-все-все (на самом деле, не совсем)
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.06.15 15:36
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Что делать, если у меня не «вычислительный комплекс»? Что, если я хочу просто запустить десяток потоков/процессов? Ах да, я помню. «проще несколько catch'ей ручками расставить», ага


Ну давай проверим, чего там. Придумаем простецкий воркфлоу, что бы была польза от эти десятка потоков-процессов, ну скажем, конвертацию из одного формата в другой. Вот смотри — надо наклепать плагинчик для офиса какого, что бы работал у вындоусе ин-процес или на андройде и тд. Ну и основной контекст это оффлайн, юзеры просят, аж пищат.
Для андройда кстати очень актуальная проблема — там очень сложно всё с потоками, Эрланг ажно просится.
Плагин простой — встраивается в UI и показывает прогресс этих самых задач.

Валяй, покажи чем ты тут науправляешь и сколько десятков лет или столетий у тебя уйдет на то, что бы всунуть Эрланг в классические десктоп и мобайл приложения.
Код писать не нужно, просто объясни внятно, без идиотии в духе "вот ссылка на дерево супервизоров"
Re[10]: Эрланг и все-все-все (на самом деле, не совсем)
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.06.15 15:42
Оценка:
Здравствуйте, Mamut, Вы писали:

I>>И когда тебе напоминают про параллельные задачи, ты тут же начинаешь стенать "снова 100500 потоков".

I>>Параллельные задачи это целиком про управление потоками-процессами-задачами.

M>Покажи мне, где у alex_public в его примере управление потоками.


Запустить, выбрать все физические ядра, выполнить, собрать результаты, остановить.

I>>Скажем, системно-зависимый функционал, он тоже про такое управление. Но внезапно, эрланг уже не может в силу ряда причин — например потому, что в ОС целый вагон блокирующих вызовов из за того, что куча объектов прибито гвоздями к физическому потоку.


M>Пока что все, что большинство, включая тебя, смогло сказать про управление — это «зачем оно нужно», «не, невозможно», «зачем убивать потоки» и прочее типа «на мьютексах все можно сделать, это как сообщшения»


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

M>Хотя, казалось бы, даже без привязки к Эрлангу все было написано в первом же сообщении. Но читать? Думать над написанным? ЗАЧЕМ?!


Над всяким говном никто в своём уме думать не будет.

M>>>Заметно, как ты понимаешь, что я пишу, несмотря на максмально простой стиль изложения.

I>>Я и говорю — ты объясняешь сам себе, потому всё кажется просто.

M>Там действительно все просто. Просто ты не делаешь даже попыток понять, что там написано. Плюс зашоренность.


Я уже давно замечаю, когда основной аргумент "там всё просто", то всегда кругозор с игольное ушко.
Скажу страшное — простота меряется не в количестве строчек текста и даже не в строчках на Эрланге.
Re[7]: Эрланг и все-все-все (на самом деле, не совсем)
От: Философ Ад http://vk.com/id10256428
Дата: 30.06.15 17:43
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>я в своё время недоумённо спрашивал, откуда у вас, сишников, проблемы многопоточности — на хаскеле их у меня не было. при message passing approach ошибки синхронизации просто отсутствуют. на самом деле в реальной программе у меня есть несколько раздляемых ресурсов, но их так мало, что контролировать несложно. скажем, обращение к выходному файлу я просто обернул в мьютекс и потому разные потоки в принципе не могут его делать одновременно


Элементарно, Ватсон!
Первый вариант программы скорее всего не содержит ошибок синхронизации: инварианты учтены, шареные данные синхронизированы правильно (места возможных гонок и дедлоков просмотрены), а потом, в процессе развития программы (или в процессе багфиксов) допишет что-нибудь вот такое:

private volatile m_sumThingEnabled
public bool IsSumThingEnabled
{
get{ return m_sumThingEnabled;}
set
{
m_sumThingEnabled = value;
OnChangedEnabledSomthing();
}
}


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

Ясен пень, что этот пример взят с потолка, но суть проблемы он в принципе демонстрирует.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[33]: Эрланг и все-все-все (на самом деле, не совсем)
От: Пацак Россия  
Дата: 30.06.15 19:26
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Ну давай проверим, чего там. Придумаем простецкий воркфлоу, что бы была польза от эти десятка потоков-процессов, ну скажем, конвертацию из одного формата в другой.


Зачем ковертацию? Это опять же получится числодробилка, где несколько параллельных процессов порождаются, обслуживают некоторые вычислительные задачи и дохнут безо всякого управления. Интереснее было бы, если бы каждый процесс получал некоторые данные извне (можно эмулировать через ГСЧ для простоты), анализировал их и в зависимости от результата решал, что ему делать дальше:
— завершиться штатно
— сдохнуть аварийно
— запустить N дочерних процессов и опрашивать их при дальнейшем анализе
— притормозить на время и известить об этом родителя
— грохнуть принудительно всех детей
— и т.п.

Я ж так понимаю Мамут в своих спичах делает упор на легкость именно управления процессами, а не тупо их создания в количестве "дофига штук". А легкость управления лучше всего проверяется его многообразием.
Ку...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.