@proRuby

Страница 111 из 1594
Yuri
02.08.2016
10:04:38
откуда вы такие задачи берете? :)

Amir
02.08.2016
10:23:37
ну хз я делаю так в скрипте руби #!/usr/bin/env ruby и запускаю как обычный баш скрипт передаю на крон чтобы запустить периодически

Nikolay
02.08.2016
10:25:01
откуда вы такие задачи берете? :)
у меня например та же фигня будет. по крону дергать кое что, но я точно буду использовать системный крон, а не писать адов костыль как на текушей панели хостинга сделано, когда из крона там дергается пхп скрипт раз в минуту который изображает из себя крон, который изображает из себя крон, и который во время рестарта мускуля умудряется к херам забить логами 10 гиговый /var/log

Константин
02.08.2016
10:41:16
@ojab извини за занудство, но я спрашивал, как оно будет функционировать без процесса. Нити без процесса не могут существовать, нити выполняются последовательно и тормозят выполнение других нитей. Куда логичнее было бы использовать именно процесс для постоянно висящей задачи. Так вот.. sucker_punch использует https://github.com/ruby-concurrency/concurrent-ruby в коде которого слово процесс в самом прямом смысле встречается http://joxi.ru/krD7on6u0YQPzA ну очень часто. Ни раз выполняется поиск количества ядер http://joxi.ru/eAO5ogXU4P013m так вот.. уже доказав, что топовая реализация многопоточности использует процессы могу тебе точно заявить, что "есть такая штука как треды" было сказано не в тему. А вообще спасибо, много полезного узнал)

Google
ojab
02.08.2016
10:42:20
ну ок

только вопрос был про использование существующего [предположительно рельсового] процесса для выполнения job'ов

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

yopp
02.08.2016
10:44:02
«нити выполняются последовательно и тормозят выполнение других нитей»

чтаааааааа

ojab
02.08.2016
10:44:06
ну и смысла доказывать что sucker_punch использует треды я не вижу

Константин
02.08.2016
10:44:26
Тогда не понятно, как он реализует отложенный вызов, если нет нового процесса
Вот был мой вопрос. Как sucker punch реализует отлженный вызов, если нет нового процесса?

yopp
02.08.2016
10:44:55
что ты блядь несёшь ваще

господи

Константин
02.08.2016
10:45:01
чтаааааааа
Меня вот сюда направили))

https://en.wikipedia.org/wiki/Thread_(computing)#Processes.2C_kernel_threads.2C_user_threads.2C_and_fibers

ojab
02.08.2016
10:45:51
дальше можешь идти читать доки к ScheduledTask в concurrent_ruby

Google
ojab
02.08.2016
10:46:44
ну или сорцы concurrent_ruby, если доки не убедят

Константин
02.08.2016
10:47:06
Так, давай серьезно говорить. Мне самому очень интересно как оно все устроено, если ты просто хочешь загнобить новичка - то шибко от этого не выиграешь, я не обидчивый и умею признавать ошибки.

это я для yopp

ну или сорцы concurrent_ruby, если доки не убедят
Так я вот клонировал репозиторий и сделал поиск по ключевым словам

ojab
02.08.2016
10:49:05
и увидел что там встречается подстрока 'process'

ок

Константин
02.08.2016
10:49:10
Там Thread.new встречается http://joxi.ru/J2bJQORh47j8Q2

ojab
02.08.2016
10:49:12
что дальше и что это доказывает?

Константин
02.08.2016
10:49:18
А fork нет вообще

yopp
02.08.2016
10:49:21
господи

Константин
02.08.2016
10:49:42
Молись в другом чате)))

Руби приложение однопоточно же?

ojab
02.08.2016
10:50:17
нет

руби поддерживает треды

в MRI есть GIL, но треды от этого не исчезают

Константин
02.08.2016
10:50:51
Ну rack сервер создает много потоков

Или как оно работает?

yopp
02.08.2016
10:51:03
А fork нет вообще
Для начала тебе надо понять в чём разница межде всеми механизмами реализации многопоточности

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

Константин
02.08.2016
10:52:08
Для начала тебе надо понять в чём разница межде всеми механизмами реализации многопоточности
Если я правильно понял - у нас есть проц с 2 ядрами.. мы можем создать 2 параллельных процесса, в которых много нитей

Google
yopp
02.08.2016
10:52:18
Мы можем создать сколько угодно процессов

На сколько адресного пространства хватит

Константин
02.08.2016
10:52:35
именно параллельных?

yopp
02.08.2016
10:52:47
...

Aldar
02.08.2016
10:53:10
на каждый процесс стек нужно выделить, это 8мб

yopp
02.08.2016
10:53:13
сомнительно
если не вдаваться в детали, то примерно так.

именно параллельных?
что значит «паралелльных»?

Константин
02.08.2016
10:54:09
выполняемых одновременно

yopp
02.08.2016
10:54:16
что значит «выполняемых»?

Aldar
02.08.2016
10:54:33
concurrent

vs parallel

yopp
02.08.2016
10:54:59
Представьте себе что у вас есть 100 простых арифметических задач по несколько тысяч выражений

и 8 человек которые могут их решать

Aldar
02.08.2016
10:55:14
это параллелизм

как в ГПУ

yopp
02.08.2016
10:55:26
окей, один

Aldar
02.08.2016
10:55:44
один человек это уже конкарренси

yopp
02.08.2016
10:56:06
блядь

Aldar
02.08.2016
10:56:18
хотя если один человек будет выполнять задачи последовательно, то даже concurrency тут не будет

Google
Константин
02.08.2016
10:56:33
http://joxi.ru/bmoBXMquMYRMVr

вот такую картинку надыбал

yopp
02.08.2016
10:57:03
Давайте мы с простого начнём

Константин
02.08.2016
10:57:23
parallelism is when two tasks literally run at the same time

yopp
02.08.2016
10:57:52
Есть 100 задач и 1 человек который может их решать. На каждую задачу есть по тетрадочке, в которой есть и текст задачи и какие-то там заметки в процессе решения.

Константин
02.08.2016
10:57:52
параллельно работающий - значит в один момент времени

yopp
02.08.2016
10:58:24
Есть штука, называется «шедулер», которая решает какая задача важная и выдаёт человеку тетрадочки.

Aldar
02.08.2016
10:58:51
тогда здесь не будет concurrency как я уже говорил

yopp
02.08.2016
11:00:02
Admin
ERROR: S client not available

yopp
02.08.2016
11:00:16
с этого всё и началось на самом деле

у тебя был текстовый редактор

и программа печати

и ты не мог выполнять две задачи одновременно

Константин
02.08.2016
11:00:47
Ну не отвлекайся, пожалуйста)))

yopp
02.08.2016
11:00:58
при этом принтер был такой медленный физически, что программа печати 99% времени делала ровно нихуя

с этого началась эра многозадачности

Evgeny
02.08.2016
11:01:29
Если этот чел будет делать все по чуть чуть последовательно, это - треды, если он каким то макаром расплодится и станет в раз их делать уже параллелизм, разве не так?

yopp
02.08.2016
11:01:49
появился первый дубовый шедуллер, который мог давать немного времени подпроцессу печати и всё остальное время текстовому редактору

Google
Danila
02.08.2016
11:01:51
кек

какой пиздец у всех в головах

yopp
02.08.2016
11:02:09
всё так

Константин
02.08.2016
11:02:29
какой пиздец у всех в головах
Присоединяйся, тут действительно серьезная тема!))

всё так
Следовательно треды тормозят выполнение других тредов в своем процессе?

Danila
02.08.2016
11:03:01
книжки читать лучше и статьи, а не в чатике что-то кому-то доказывать

Aldar
02.08.2016
11:03:04
называется веб разрабы постигают основы cs

Константин
02.08.2016
11:03:12
Так не доказываем, обсуждаем

yopp
02.08.2016
11:03:17
потому что ядро может работать с одной тетрадочкой в еденицу времени

для тебя — нет

потому что переключение может происходить сотни тысяч раз в секунду

Константин
02.08.2016
11:03:51
Ну так я это и имел в виду выше.

yopp
02.08.2016
11:04:20
так вот

из-за скорости переключения между задачами, не важно какой примитив для этого используется процесс, нить, файбер или ещё какое изобретение, тебе это не важно

для тебя они могут работать параллельно

файберы зря ввернул, там ты сам решаешь

только ты решаешь на уровне своего приложения

а чо решит операционная система от тебя совсем не зависит

не RToS система вообще тебе никаких гарантий не даёт

Danila
02.08.2016
11:07:31
в общем посоны, не надо смешивать понятия тредов, процессов, конкарренси и параллелизма

yopp
02.08.2016
11:07:57
^

Nikolay
02.08.2016
11:08:00
https://pragprog.com/book/jsthreads/working-with-ruby-threads

Страница 111 из 1594