Так, как работают демоны в операционке, поясните?Вот есть веб-сервер, он что-то слушает. Он должен маскимально быстро обработать поступивший запрос. Ок, предположим, что listener реализован через цикл while true ...Но вот я пишу while true на РУБИ - и процесс начинает жрать весь CPU. Почему же nginx не жрет в idle режиме весь CPU? Как это реализовано?Ок, допустим, там таймаут - 0.001 секунда, но это же дохуя? Процесс ruby с таким таймаутом уже жрет 2,8% CPU, но это все равно много
Бамп
>>163440253 (OP)> Так, как работают демоны в операционкеП Р О С Т ОРОСТО
>>163440253 (OP)https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D1%80%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5>/thread
>>163440544Нихуя не понял, конечно, хули /thread то? Кто шлет прерывание? Вот идет запрос GET /, каким образом это конвертируется в прерывание?
>>163441435учи ccna
>>163440511По моему, ты слегка охуел, не так ли?
>>163441729Неужели это так сложно, что нельзя объяснить парой абзацев?
>>163441849Думаю ОП, что сложновато, и к тому же он весьма вероятно сейчас дрочит свое дрисло морковкой, а ты его отвлекаешь. Да, мне кажется это главная причина.
>>163441849да пиздец сколько всего выписывать, если ты думаешь что это операционка делает
>>163441961А кто это делает?
>>163442147Я не знаю, но вот тебе тарелка и робот.
>>163440253 (OP)Не стоит вскрывать эту тему.
>>163442234Ребята, давайте вскроем эту тему, стоит интересоваться этой темой. Вы молодые, здоровые, умные. Это то что надо. Это яхты и виллы. Сюда нужно вливаться незамедлительно. Серьезно, любой из вас будет счастлив от такого. Это лучше чем сидеть на жопе и создавать треды про еот. Я вполне понимаю что данным сообщением вызову дополнительный интерес, но хочу сразу предостеречь — самое опасное в жизни — прожить ее, не заметив, как она прошла, будучи серой мышью. Остальные просто не будут такими умными чтобы сделать все чисто
>>163442228Тот умник мелкобуквенный, пусть лучше он ответит.
бамп
>>163443349Пошел нахуй. Если не понимаешь, значит это тебе не нужно.
>>163443473Сам иди нахуй с такой логикой
>>163440253 (OP)>Но вот я пишу while true на РУБИ - и процесс начинает жрать весь CPU. Любой процесс в while(tru) будет драть CPU.>Почему же nginx не жрет в idle режиме весь CPU? Они читали мануал и книгу по сетям.>Как это реализовано?Довольно просто.
Сука, весь тред кидаются тегами и пишут, что довольно просто, но никто ничего разумного не объяснил.>Как работает электрическая лампочка накаливания, как свет возникает в ней?>ТОК)))0>читай физику за 10 класс>очень просто))
>>163440253 (OP)Ты уверен, что хочешь с нуля писать веб-сервер, не имея представления о работе сети? Есть куча готовых реализаций, они МАКСИМАЛЬНО БЫСТРЫЕ.
>>163444625По пути выучу основы, я же для себя хочу написатьЧитаю вот TCP/IP Illustrated (а после буду HTTP guide собрался).Но вопрос ОП-поста мучает меня сейчас
>>163440253 (OP)man epoll
>>163440253 (OP)В посте присутствует слово из спам листа. Обезьяна пидор.
>>163445423Каким механизмом сделано так, что doShit() привязан к событию клика?
>>163440253 (OP)Потому что они нормально взаимодействуют с ядром.
>>163440253 (OP)select, poll, epoll, ruby async server ---> гугл
>>163445423chronou$Он еблан походу, а не пидор
>>163444977Боюсь, на руби/питоне нельзя реализовать работу с сетью на низком уровне, скриптовые языки предоставляют более высокоуровневое апи для сокетов.Этот >>163445423- петух написал в принципе верно, но без конкретики. А в твоем конкретном случае тебе надо использовать функцию select в либе sockets. Это в питоне так, ну в руби наверняка сделано аналогично. Обработка запросов будет выглядеть примерно так:rlist, wlist, xlist = [], [], []while True: select(rlist, wlist, xlist, timeout) do_work(rlist, wlist, xlist)
>>163445746В каждом языке-фреймворке свои методы. В жабаскрипте, например, гугли таймеры, коллбеки, промисы.