В общем, понимание появилось, но есть вопросы, ответы на которые может дать только тот, кто уже на практике имел дело с RIO.
Спрошу здесь, но если знаете, где можно наверняка получить ответы — подскажите. На форум майкрософта надежды нет, как можно понять перейдя по ссылке выше
Подразумевается использование TCP-протокола (не UDP)
1) RIO. Нужно ли получать таблицу функций для каждого сокета или достаточно сделать это один раз (для самого первого созданного сокета)?
Вызов «WSAIoctl()» для получения таблицы не создает каких-то внутренних структур или связей для сокета, указанного в качестве аргумента? Просто возвращает статичные адреса процедур, как при линковке dll?
Андрей К, нет, все намного банальнее — я злостный изобретатель велосипедов. После бэктестера пилю свою программу для торговли, и раз уж все равно заморачиваться, то почему бы сразу не делать с РИО, раз уж мелкомягкие его так хвалят в описании.
Дед Нечипор, насколько я понял, это по сути все тот же Winsock api, просто немного вглубь — избавляемся от копирования данных для отправки и уменьшаем количество переключений в режим ядра за счет извлечения множественных данных одним запросом
Дед Нечипор, вы сколько данных для отправки копируете, и сколько наносекунд это занимает на современном процессоре?
Пинг в виндовс 32-мя байтами через бытовой роутер занимает ~200 микросекунд на гигабитной сети.
Denis, меня не столько гонка за микросекундами увлекла, сколько факт, что если я все равно буду писать работу с сетью на Winsock API, то можно сделать небольшой дополнительный шажок и делать это на практически все той же Winsock, только с бонусом в виде расширенного контроля. Это если на практике не проявятся подводные камни.
В плане трудозатрат это не сильно добавит мне работы. А вот внедрение упомянутого здесь DPDK без четкого понимания зачем мне это нужно с околонулевыми начальными знаниями будет явно неоправданным.
Дед Нечипор, в агло много важных задач. Что касается контроля, то тут нужны карты Intel с хардверным ускорением стека tcp и linux. А, те, драйвера, что есть у виндовс часто не обеспечивают никаких преимуществ для данных техник. Те более, что все равно запустите робота в виртуалке, а там будет еще один слой копирования данных. В этом плане дает больше кэширование и оптимизации логики на миллисекунды.
RIO живы, но напрямую с ними работают мало. За столько лет уже сделали библиотеки для всех популярных языков. Тот же .NET Core новых версий, вроде как, использует RIO внутри.
AUD/USD: Кенгуру запрыгивает повыше. Но как высоко пустят медведи?
Австралийский доллар оттолкнулся от психологической поддержки 0.6900. Похоже, покупатели всерьез взялись за дело и метят в сторону горизонтали 0.7085, а возможно, и выше — к отметке 0.7184. Этот...
Пора перестать играть в рулетку: почему до конца года разумнее выбирать облигации с фиксированным купоном и высоким рейтингом
За последние несколько лет рынок пережил тот самый период, когда «стреляло» почти всё: от мемных акций до экзотических фондов, и случайная идея могла превратиться в гениальную стратегию. К...
Есть неприятная вещь, о которой редко говорят прямо!
Можно много торговать, накапливать опыт, смотреть рынок каждый день, разбирать графики, помнить десятки удачных и неудачных входов и всё равно не понимать, что именно в вашей торговле...
Сбер опубликовал финансовые результаты по РСБУ за 6 месяцев 2026 года. Чистая прибыль за полгода работы составила 995 млрд руб. (+20,4%). За июнь 168,1 млрд руб. (+17%). Рентабельность...
Максим, а срок 2039 год? Тут максимум корреляция с золотом сохранится в падающем тренде. Сейчас миноры полны надежд на отскок усредняются и чуть позже поедут оплачивать отдачу. Сейчас легче съездит...
Витамин Логики
Donbass, хорошо бы по Банковой жахнули Орешником!
Александр Лакин, прошлый пуск из 2 Орешников закончился нечем. Один в гаражи попал, второй вообще возле Донецка, на подконтрольн...
Бензин разгонит инфляцию, высокая ставка на долгие годы, бизнес понял что капут подкрался. Дофига кто за кордон подумал, Россия вернулась к исконному- в лишения и испытания.
Кто то ранее писал про цель индекса бакса -99,5. Только сейчас обратил внимание, да есть там незакрытая форточка. Но это проходная цель, ничего не значащая.
Нам же правильно Путь определить, Товарищ...
На фоне подорожания нефти у нас падают на 3 % все нефтяники. Мамба не реагирует на мировые новости, у нее одна новость- мира не будет, надо затягивать пояса, впереди тяжелые времена.
Ранее в Москве на Пресненской набережной трое мужчин ограбили 17-летнего подростка, который приехал в «Москва-Сити» для покупки криптовалюты на 1,5 млн руб. По данным МВД, операция по обмену не состоя...
StopForAMinute, спасибо!
Я это ранее откопал внутри устава. Удивляясь сам себе почему с него и не начал.
Но тут на преф даже положенного дивполитикой минимума не дали. Решив почему-то кинуть да...
Функции: https://learn.microsoft.com/ru-ru/windows/win32/api/mswsock/ns-mswsock-rio_extension_function_table?redirectedfrom=MSDN
Информации в интернете мало, нашел только тривиальные примеры на сайте майкрософта да пару простых примеров в сети наподобие эхо-сервера и проб использования функций с каким-никаким объяснением как использовать RIO и по-мелочи на stackoverflow.
На форуме Майкрософта все печально — те немногие топики, относящиеся к теме — глас вопиющего в пустоту:
https://social.msdn.microsoft.com/Forums/en-US/home?category=&forum=wsk&filter=&sort=relevancedesc&brandIgnore=true&searchTerm=Registered+I%2FO
В общем, понимание появилось, но есть вопросы, ответы на которые может дать только тот, кто уже на практике имел дело с RIO.
Спрошу здесь, но если знаете, где можно наверняка получить ответы — подскажите. На форум майкрософта надежды нет, как можно понять перейдя по ссылке выше
Подразумевается использование TCP-протокола (не UDP)
1) RIO. Нужно ли получать таблицу функций для каждого сокета или достаточно сделать это один раз (для самого первого созданного сокета)?
Вызов «WSAIoctl()» для получения таблицы не создает каких-то внутренних структур или связей для сокета, указанного в качестве аргумента? Просто возвращает статичные адреса процедур, как при линковке dll?
2) RIO. Есть ли возможность использовать WSAAccept() ии Connect() в неблокирующем режиме? Решение как для стандартных сокетов (подписка на событие FD_Read с помощью Select() перед Bind()) не работает — Select() возвращает ошибку 10038 «WSAENOTSOCK»
https://learn.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2
Пинг в виндовс 32-мя байтами через бытовой роутер занимает ~200 микросекунд на гигабитной сети.
В плане трудозатрат это не сильно добавит мне работы. А вот внедрение упомянутого здесь DPDK без четкого понимания зачем мне это нужно с околонулевыми начальными знаниями будет явно неоправданным.
Дед Нечипор, тогда уж лучше сразу перейти на DPDK for Windows.
Велосипеднее не придумаешь, да и latency меньше, чем в DPDK, не найти.
боюсь, не осилю даже описания, не то что портирование на Delphi
Дед Нечипор, тогда от DPDK придётся отказаться.