Маjко
А что будет без скоро увидим)
Маjко
Что значит заточен под IO?
Я пояснял там же, под держание огромного количества соединений и высокую отзывчивость
Мерль
И в том, что там есть состояние
Ну, внутрь фьючи его протаскивать не надо, имхо Так что два варианта
Мерль
Первый - плохой, но очевидный
Маjко
Да
Anonymous
Да и епол не на гоу писан)))
Anonymous
хм а как сейчас глобальные фючюры делать?
Маjко
Да и епол не на гоу писан)))
Да, но без Go тебе надо будет писать свой планировщик.
Мерль
Первый - плохой, но очевидный
Рекурсивно строить цепочку, идя по списку
Маjко
Wat? Планировщик чего?
На системные потоки ты как будешь шедьюлить свой епол?
Маjко
Рекурсивно строить цепочку, идя по списку
Рекурсивно нельзя строить цепочку, насколько я знаю
Anonymous
Всмысле?
ну там spawn_fn нужен для создания
Anonymous
или пилить отдельную функцию которая вызывает spawn_fn?
Маjко
ну там spawn_fn нужен для создания
Зачем? У тебя одна фьюча, просто скармливаешь ее реактору
Маjко
core.run(future)
Маjко
Вроде
Маjко
Не уверен насчет имени метода
Anonymous
На системные потоки ты как будешь шедьюлить свой епол?
Поток селектор отдаёт инфу потокам воркерам о том, что в ченеле есть записи. Отдаём в очередь и радуемся. Какие там планировщики нужны)
Anonymous
В netty нет планировщиков гыгы
Anonymous
а лол
Маjко
Поток селектор отдаёт инфу потокам воркерам о том, что в ченеле есть записи. Отдаём в очередь и радуемся. Какие там планировщики нужны)
А дальше херачишь асинхронный код, сказка. В Go ты просто спавнишь тред на каждого нового клиента и всё. К тому же с системными тредами у тебя многозадачность вытесняющаа, а в го кооперативная, что как бы сказывается на отзывчивости в лучшую сторону
Маjко
Какой асинхронный код?
Ты статику с сервера раздаешь или еще какие-то действия делаешь?
Маjко
Если статику, то никакого, конечно
Anonymous
Эт в зависимости какая задача
Маjко
Ну началось
Мерль
На самом деле я не сравнивал бенчи, но то, что в Go асинхронный/многопоточный код пишется не просто, а очень просто по сравнению с той же джабкой - факт.
Anonymous
Если статику, то никакого, конечно
Да и воркеры на то и воркеры, что туда можно и бизнес логику сунуть
Мерль
Но я предлагаю вернуться к Токио
Маjко
У тебя redis и файлы на диске. Тебе нужно со всем работать асинхронно, вперед писать эффективный код на си)
Мерль
Mike дык как ты решил эту задачу?
Маjко
Я то да
Маjко
Но это было больно
Anonymous
@mersinvald в общем посмотри как устроен паиплаин в netty
Маjко
@mersinvald в общем посмотри как устроен паиплаин в netty
Аргумент про кооперативную многозадачность ты, конечно же, проигнорируешь?
Anonymous
Вытесняющая наше все
Маjко
В смысле? Эт то нах
> отзывчивость
Маjко
Ну вот по этому go и заточен под отзывчивость
Anonymous
> отзывчивость
В смысле? Наоборот )))
Маjко
А ваша вытесняющая — нет
Маjко
В смысле? Наоборот )))
Я тебя сейчас отправлю читать Танненбаума про планировщики CPU
Anonymous
У тебя тред может делать одну задачу миллион лет, а в случае с вытесняющей у тебя задачи продвигаются одновременно
Anonymous
Мне кажется ты чтот путаешь
Anonymous
Да и о какой кооперативной многозадачность в го идёт речь, когда он работает поверх неитив тредов
Anton
В случае с кооперативной, насколько я понимаю, меньше оверхеда на переключение контекста, потому что ты сам эти переключения вставляешь
Маjко
Да и о какой кооперативной многозадачность в го идёт речь, когда он работает поверх неитив тредов
Там гринтреды, они шедьюлятся на виртуальной машине Go. Вытесняюще треды конкурируют только с остальными приложениями, но не между собой
Anton
Ну да
Маjко
Чувак, или изучай
Что конкретно?
Anonymous
Гошный шедулер работает поверх неитив тредов, а значит с этого толку примерно 0
Anonymous
Лишняя абстракция)
Маjко
Гошный шедулер работает поверх неитив тредов, а значит с этого толку примерно 0
Вот тут я точно имею полное право послать тебя читать танненбаума про разницу между userspace и kernel threads и зачем когда и какие нужны
Anonymous
Зачем? У тебя одна фьюча, просто скармливаешь ее реактору
я чет не понимаю как их самих по себе создавать
Мерль
А как ты запускаешь фьючи то?
Anonymous
Отправляет меня читать книгу, которую сам не читал и вообще не в теме. Печаль.
Anonymous
имея cpupool
Маjко
Не понимаю причём тут эт? Гошные шишки пашут поверх обычных pthreads(в случае с posix)
И что? Мимо kernel threads ты никак не пройдешь А внутри каждого из NCPU pthread находятся тысячи userspace потоков, которые шедьюлятся не ядром, а виртуальной машиной Go в тот период, когда общий pthread выполняется ядром
Маjко
Отправляет меня читать книгу, которую сам не читал и вообще не в теме. Печаль.
ну что я могу поделать, если ты не понимаешь что такое userspace threads
Мерль
Эмм Я не понимаю, о чём спор
Anonymous
Да я эт прекрасно понимаю, перечитай пожалуй сообщение
Мерль
В го кооперативная многозадачность с шедулером поверх пула потоков И да, у него мало время отклика в случае сетевого io, т.к там нет на него блокировок
Маjко
> Гошный шедулер работает поверх неитив тредов, а значит с этого толку примерно 0 Нет, не понимаешь. Потому что утверждение про толку 0 равносильно "я могу создать 10к pthread и это будет равносильно 10к гошных потоков"
Мерль
pool.spawn_fn
Ааааа Я чего-то навообразил себе Ок
Anonymous
reactor.run(future)
ну да, но как создать future?
Маjко
Anonymous
Из замыкания?
есть замыкание