Andrei
При чем тут это?
Sergey
Лолвут
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 был свидетелем всех проявлений моего невежества в этой теме
🦥Alex Fails
Pavel 🕷
@ned_ogl девушка или мужик? есть тут знатоки?
🦥Alex Fails
Это не этот чат, где нало это оьсужлвть)
Andrei
Если это блокирующие сокеты, т. е. синхронное ио, то там все ясно. Делаешь системный вызов и спишь пока не пришли данные нужного размера. Есть асинхронное ио, неблокирующее которое ты в цикле условно говоря опрашиваешь сокеты, select, которое работает за о(n) системных вызовов по количеству сокетов. И наконец есть ио с системной диспетчеризацией. Оно выглядит как блокирующееся, только ты не на read/write встаешь, а на особый вызов системный, который возвращает например хендл сокета в котором готовы данные
🦥Alex Fails
Andrei
Или в случае винды iocp ты указываешь колбек (комплишн порт) который система сама дергает с нужными данными.
🦥Alex Fails
Andrei
Andrei
Огромный оверхед
Andrei
🦥Alex Fails
Да.
чутка пинал их из юзермода
🦥Alex Fails
Они были в мсдне
Andrei
Так они и так из юзермода работают. Просто wait уходит в ядро и APC уходит в ядро поэтому все круто
Andrei
И процесс ничего не потребляет ничего.
🦥Alex Fails
Надо б в свою прогу на гле впилить
🦥Alex Fails
Чтоб когда фрейм нарисовался, и логика прошла, она уходила в апс
Stanislav
🦥Alex Fails
И не жрала цп
Andrei
Достаточно просто в waitformultipleobjects уходить
🦥Alex Fails
Ща у меня там балансировщик на QPC/QPF
Andrei
Виндовый
🦥Alex Fails
+Sleep(1)
Andrei
Вот это худо.
Stanislav
😞 виндовс специфик
Andrei
Такие вещи все платформ специфик
Ned
блин, я перестал понимать, о чём вы где-то далеко сверху
🦥Alex Fails
Вот это худо.
Ну, цп жрется меньше, но все рвно мне не нравится
Ned
что об этом почитать?
🦥Alex Fails
🦥Alex Fails
🦥Alex Fails
(По крайней мере, по жтой хне, что мы ща обсужлаем)
Andrei
Почитать про то, что такое кооперативная многозадачность
Andrei
Про async await
Andrei
И как их использовать с сетью
Ned
Windows internals
а, это нинад, спасибо. если windows-specific, то совсем не надо. лучше linux-specific
Andrei
Посмотри ролики гора нишанова про корутины
Andrei
🦥Alex Fails
Andrei
Нет. Из-за предвзятости к винде
Andrei
Серверная винда очень быстрая.
Andrei
Быстрее линукса
Andrei
И рынка занимала больше еще пару лет назад.
Andrei
Ну и зря. Закрываешься отзнаний. К тому же половина комитета плбсов
Andrei
Так или иначе связаны с майкрософтом
Andrei
Тот же самый гор нишанов
Ned
Из нравственных убеждений скорее, чем из здравого смысла
Stanislav
Andrei
Конечно. Это все не спроста
Stanislav
ну на домашнем компе линукс потому что у него аллергия на винду)