@devops_ru

Страница 2958 из 4568
Nick
23.07.2017
15:13:53
а зачем мне ее знать?

Nikolay
23.07.2017
15:14:00
поэтому и написал, что корутины не будут быстрее потоков
корутины будут на i/o задачах зачастую быстрее потоков

Nikolay
23.07.2017
15:14:16
а зачем мне ее знать?
потому что если ты не понимаешь разницу между ними - ты не понимаешь предмет от слова "совсем"

Google
Nikolay
23.07.2017
15:14:27
обоснуй
читай выше, уже разжевали

Nick
23.07.2017
15:14:43
я сделаю 1 поток ассептор и n воркеров, с чего тут быть быстрее корутинам?

Nikolay
23.07.2017
15:14:48
если ты решил придраться, что без создания main thread не запустишь epoll и не создашь корутин - то это клиника

Nick
23.07.2017
15:15:41
да с херали?

это просто потоки)

Nikolay
23.07.2017
15:16:44
это просто потоки)
я сейчас тебе порву шаблон и напомню, что ты можешь реализовать корутины на потоках

Nick
23.07.2017
15:16:50
можешь

Nikolay
23.07.2017
15:16:52
а можешь и в одном потоке это сделать

и что будет быстрее - большой вопрос

Nick
23.07.2017
15:17:08
тогда твое утверждение о том, что они быстрее сосет вдвойне

Nick
23.07.2017
15:17:51
ну ты мне скажи, за счет чего они будут быстрее?

Google
Nick
23.07.2017
15:17:54
раз ты не дурак

Nikolay
23.07.2017
15:18:00
когда у тебя много тредов - тебе как минимум надо тратить ресурсы на общение с ними

N
23.07.2017
15:18:22
Я джва года ждал годный срачик!

Nikolay
23.07.2017
15:18:23
шедулер системный будет поверх этого всего еще бегать и контекст переключать

Alex
23.07.2017
15:18:24
поэтому и написал, что корутины не будут быстрее потоков
Ты то говоришь про иногда, а теперь утверждашеь что "не будут". Будут в определенных задачах где нагрузка на io не так высока. Потоки будут кушать больше процессорного времени, поэтому и у них получше с общим io, но тк он ложится на шедулер - мы теряем скорость инициализации и имеем оверхед на синхронизацию, чего нет с сопрограммами + потоки надо чаще оборачивать механизмами синхронизации что опять чревато дрочкой смены контекста(в случае с мютексами). Здесь атомики еще спасают как-то

Nick
23.07.2017
15:18:37
1 кто тебе сказал, что я буду делать синхронизацию?)

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

Nikolay
23.07.2017
15:19:08
это все тяжело, в одном треде ранать корутины зачастую быстрее, но такой метод будет обрабатывать меньше соединений, чем если ты застартуешь несколько тредов и в каждом запустишь по лупу с корутинами

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

куда дороже, чем передача управления корутине

Nikolay
23.07.2017
15:20:01
про пулы не слышал?
в пулах потоки как-то по-другому работают штоле? не пиши ерунду

Nick
23.07.2017
15:20:12
они созданы уже)

Nikolay
23.07.2017
15:20:17
потоки есть потоки, хоть пулом их создавай, хоть pthread_create

Alex
23.07.2017
15:20:19
1 кто тебе сказал, что я буду делать синхронизацию?)
Ну например у тебя есть мастер и воркеры, воркеры будут иметь механизмы синхронизации друг с другом? - Будут. Те даже если оно будут иметьп прединициализацию будут происходить задержки. Но в контексте веб серверов это целесообразно тк там io нужен максимальный

Nikolay
23.07.2017
15:20:28
они созданы уже)
окей, и? тебе в них данные передавать надо все равно

Alexey
23.07.2017
15:20:51
Я джва года ждал годный срачик!
Ерунда. Это ещё гоферы и остальной мир не срались. Там адок творится, да.

Nikolay
23.07.2017
15:21:06
зачем?
затем, что тебе надо отсылать событие в коннектор на сокете, чтобы кинуть потом его клиенту

Google
Nikolay
23.07.2017
15:21:08
как минимум

Alex
23.07.2017
15:21:35
я ж сказал решение, канал привязывается к потоку, все - конкуренции нет
Ну, понимаешь ли, в веб серверах все не так просто. Ибо есть механизмы релоадинга конфигов(аля нжи). Везде есть синхронизация

Nikolay
23.07.2017
15:21:41
в одном потоке
у тебя их уже два. Воркер и тот, который сокет слушает

Alex
23.07.2017
15:22:07
это другой уже вопрос
на практике синхронизация нужна в 90% случаев

Nikolay
23.07.2017
15:22:55
я вам в пример привел netty
сам по себе асинхронный сервер, который умеет только принимать коннекшены и не умеет в бизнес-логику, ни на что не годен

Nick
23.07.2017
15:23:12
на практике синхронизация нужна в 90% случаев
на практике она нужна только когда есть конкуренция, в случае с вебсерверами редкая задача

Nikolay
23.07.2017
15:23:16
вот тебе вопрос на засыпку

Nikolay
23.07.2017
15:23:43
что быстрее: 1) передать контекст управления внутри одного треда другой функции 2) отправить сообщение в тред и дождаться ответа из него

Nikolay
23.07.2017
15:24:32
можешь взять помощь зала, если не знаешь

Nick
23.07.2017
15:24:36
думаю что первое)

угадал?)

Nikolay
23.07.2017
15:24:43
бинго!

именно по этому принципу и работают однотредовые приложения на корутинах

так что твои построения с тредами выше невалидны

Nick
23.07.2017
15:25:29
так я ж ничего не перадаю между тредами, только ассептор говорит воркерам, что пора поработать

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

Google
Nikolay
23.07.2017
15:25:47
вся остальная работа идет в одном треде и это получается твои первый вариант
шта? у тебя уже есть треды-воркеры, откуда в одном треде?

Nick
23.07.2017
15:26:20
я тебе про netty ты мне про один тред

таких систем то нет уже)

Nikolay
23.07.2017
15:26:30
это лишь один из примеров, причем не самый удачный

потому что там гибридный режим

который, разумеется, быстрее однопоточного сервера

Admin
ERROR: S client not available

Nick
23.07.2017
15:27:36
я че хотел сказать то изначально

что все зависит от реализации

и в тредах, ты можешь наворотить куда более крутые штуки

и врядли они будут медленнее корутин

Nikolay
23.07.2017
15:28:09
в тредах куда проще наворотить кучу говна

и врядли они будут медленнее корутин
разумеется, на i/o операциях, будут

Nick
23.07.2017
15:28:30
с чего вдруг?)

мы же уже выяснили что нет

Nikolay
23.07.2017
15:28:49
мы же уже выяснили что нет
мы уже выяснили, что да

Nick
23.07.2017
15:28:52
нет

Nikolay
23.07.2017
15:28:56
даю еще одну подсказку-вопрос

Google
Nick
23.07.2017
15:28:59
давай

только не про апач и нжинкс плиз

Nikolay
23.07.2017
15:29:55
только не про апач и нжинкс плиз
не, про них ты уже слился

ща

что быстрее: 1) навесить луп на прием событий от системы, и запускать код только когда эти события приходят, не пересылая никуда ничего 2) при приходе данных в хэндлер передавать управление этим хэндлером обработчику в потоке, который возвращает управление, только обработав данные

bebebe
23.07.2017
15:32:18
вы кто-нибудь на С писали?

Nikolay
23.07.2017
15:32:33
бонус: первое - так работает торнадо в общем случае, второе - так работает апач и прочие тредовые сервера

bebebe
23.07.2017
15:32:33
а то уже подустать можно от вашей переписки

Nikolay
23.07.2017
15:32:42
вы кто-нибудь на С писали?
все когда-то это делали)

Старый
23.07.2017
15:33:15
i7 7700hq оказался оч так себе

Nikolay
23.07.2017
15:33:21
дык первое не мешает делать на потоках ?
"не пересылая никуда ничего", так что мешает

Aleksandr
23.07.2017
15:33:44
разумеется, зачем мне треды на epoll?
https://www.nginx.com/blog/thread-pools-boost-performance-9x/ вот для этого

Nikolay
23.07.2017
15:34:08
https://www.nginx.com/blog/thread-pools-boost-performance-9x/ вот для этого
опять же, гибридный подход, да, я про это и не спорю

Nick
23.07.2017
15:34:18
все, я пошел

Колюня - ты не прав

Nikolay
23.07.2017
15:34:29
я про то, что нету никакого обязательства стартовать больше одного треда для обработки событий с epoll

Старый
23.07.2017
15:34:37
давайт процы обсудим

Nick
23.07.2017
15:34:37
нету, хоть 10

Страница 2958 из 4568