Andrei
При чем тут это?
Sergey
Лолвут
🦥Alex Fails
Это несложно.
Рав сокеты юзаешь для скорости?
Andrei
Системную диспетчеризацию.
🦥Alex Fails
минидрайвер зопелил?
🦥Alex Fails
хотя стой
🦥Alex Fails
Понял
🦥Alex Fails
Это команды, которые насильно заставляют систему обрабатывать твой поток? Там смена приоритета, и еще всякие DPC / APC?
Andrei
Iocp, epoll, KQUEUE
Andrei
Да. Асинхронная синхронка.
Andrei
За o(1)
🦥Alex Fails
Збсс
Andrei
От числа соединений.
🦥Alex Fails
а это ты делаешь на уровня ядра? Или юзера?
Andrei
Нет. Юзера конечно.
Andrei
Я просто ухожу спать в ядро.
Andrei
И ядро же меня и будит.
🦥Alex Fails
(Хотя вопрос глупый. Ясен пкнь, что kernel-mode🙂)
Andrei
О(1) это на уровне ядра. Во всех ядрах есть соответсвующие вызовы
Ned
о, опять народ за умные вещи говорит
Ned
Андрей, объясни, пожалуйста, что такое быстрая сеть
Andrei
Вопрос в контрол флоу.
Andrei
Как ты понимаешь, что тебе пришли данные.
🦥Alex Fails
Инт надо ловить от сетевухи)
🦥Alex Fails
И оьрабатывать шустро)
Ned
ну так вот я, честно говоря, в сетях ни бум бум. меня их заставляли прогать в универе, но я под честное слово списал это к херам. @AlexFails был свидетелем всех проявлений моего невежества в этой теме
Pavel 🕷
@ned_ogl девушка или мужик? есть тут знатоки?
Ned
Сырцы ккие-гибудь остались? Или задания?
предположим... сервер, играющий с клиентами в виселицу. параллельно через pthread.
🦥Alex Fails
Это не этот чат, где нало это оьсужлвть)
Andrei
Если это блокирующие сокеты, т. е. синхронное ио, то там все ясно. Делаешь системный вызов и спишь пока не пришли данные нужного размера. Есть асинхронное ио, неблокирующее которое ты в цикле условно говоря опрашиваешь сокеты, select, которое работает за о(n) системных вызовов по количеству сокетов. И наконец есть ио с системной диспетчеризацией. Оно выглядит как блокирующееся, только ты не на read/write встаешь, а на особый вызов системный, который возвращает например хендл сокета в котором готовы данные
Andrei
Или в случае винды iocp ты указываешь колбек (комплишн порт) который система сама дергает с нужными данными.
Andrei
Огромный оверхед
🦥Alex Fails
Да.
чутка пинал их из юзермода
🦥Alex Fails
Они были в мсдне
Andrei
Так они и так из юзермода работают. Просто wait уходит в ядро и APC уходит в ядро поэтому все круто
Andrei
И процесс ничего не потребляет ничего.
🦥Alex Fails
Надо б в свою прогу на гле впилить
🦥Alex Fails
Чтоб когда фрейм нарисовался, и логика прошла, она уходила в апс
🦥Alex Fails
И не жрала цп
🦥Alex Fails
зачем? :)
Чуть выше ответ
Andrei
Достаточно просто в waitformultipleobjects уходить
🦥Alex Fails
Ща у меня там балансировщик на QPC/QPF
Andrei
Виндовый
🦥Alex Fails
+Sleep(1)
Andrei
Вот это худо.
Stanislav
😞 виндовс специфик
Andrei
Такие вещи все платформ специфик
Ned
блин, я перестал понимать, о чём вы где-то далеко сверху
🦥Alex Fails
Вот это худо.
Ну, цп жрется меньше, но все рвно мне не нравится
Ned
что об этом почитать?
🦥Alex Fails
🦥Alex Fails
(По крайней мере, по жтой хне, что мы ща обсужлаем)
Andrei
что об этом почитать?
В целом можешь почитать описание например к libev или libevent
Andrei
Почитать про то, что такое кооперативная многозадачность
Andrei
Про async await
Andrei
И как их использовать с сетью
Ned
Windows internals
а, это нинад, спасибо. если windows-specific, то совсем не надо. лучше linux-specific
Andrei
Посмотри ролики гора нишанова про корутины
🦥Alex Fails
Stanislav
Эх, не шаришь ты...
О_О из за линукса?
Andrei
Нет. Из-за предвзятости к винде
Andrei
Серверная винда очень быстрая.
Andrei
Быстрее линукса
Ned
Эх, не шаришь ты...
Мб и не шарю, но вчера говорил, что я MSфоб
Andrei
И рынка занимала больше еще пару лет назад.
Andrei
Ну и зря. Закрываешься отзнаний. К тому же половина комитета плбсов
Andrei
Так или иначе связаны с майкрософтом
Andrei
Тот же самый гор нишанов
Ned
Из нравственных убеждений скорее, чем из здравого смысла
Andrei
Конечно. Это все не спроста
Stanislav
ну на домашнем компе линукс потому что у него аллергия на винду)