Причем это сейчас реально запилить. В винде считалки фреймрейта встраиваются, так и картинку можно обработать.
Ну и для всего остального тоже конечно. Читаешь на английском, неясно, кнопень нажал он тебе весь текст на экране перевел. Пока так, а потом и в рантайме хочу.
@medvedych @rur я бы чатгоооту спросил. По разному.
@robolamp давно удалил свой акк там.
К вопросу использования #epoll вместо хорошо знакомых и «традиционных» select & poll. Т.е. асинхронной работы с чем-либо посредством polling’а и мультиплексирования.
Недавно пришлось заниматься реализацией очереди событий для AMQP-CPP. В одном из продуктов решено сделать связь агентских частей с основным «контроллером» через #AMQP, в качестве брокера #RabbitMQ (всё стандартно, обычный кластер и TLS-соединения).
Вот только агенты продукта активно используют асинхронно-реактивное программирование с хорошей «горизонтальной масштабируемостью». Когда достигнуто полноценное sharing nothing, не просто горизонтальная масштабируемость через lock-free или wait-free и закон Амдала. Исключается много всего и сразу, как старый-добрый cache ping-pong, так и печаль с false sharing.
Отсюда внутри агентов и своё управление потоками с выделениями памяти. Не только в плане heap (динамической памяти, со своими аллокаторами а-ля #jemalloc от #Facebook), но и приколы вокруг узлов #NUMA и даже huge pages (снижающих «давление» на #TLB, меньше промахов).
Первая же проблема выплыла почти сразу — не реально использовать библиотеку AMQP-CPP с уже предоставляющейся поддержкой #libev, #libuv, #libevent. Несовместимы эти очереди сообщений с имеющейся моделью управления потоками и организации задач на агентах.
Почему был взят epollПодход используемый в #epoll выглядит более современно, меньше копирований памяти между user space и kernel space. А при появлении данных в отслеживаемом файловом дескрипторе можно напрямую перейти по указателю на объект класса или структуру данных. Тем самым обходиться без поиска дескриптора по индексным массивам/контейнерам. Сразу же работать с экземплярами объектов оборачивающих нужное #tcp -соединение, того самого, в которое и пришли данные.
И тут обозначилась вторая проблема, что используема AMQP-библиотека не вычитывает данные целиком из потока сокета. Например, забирает данные лишь до тех пор, пока не насытится автомат состояний (finite-state machine), выполняющий парсинг сущностей AMQP-протокола.
Используя #epoll приходится выбирать на какой вариант обработки событий ориентироваться:
срабатывание оповещений «по уровню» (level-triggered),
выбрасывания событий «по фронту» (edge-triggered).
И беда с библиотекой в очередной раз показала, что нельзя использовать работу «по фронту» (edge-triggered) не изучив досконально работу подсистемы отвечающей за вычитывание данных из файловых дескрипторов. И появление флага EPOLLET в коде является маркером, о том, чтобы проводить аудит использовавшихся решений.
Про Edge Triggered Vs Level Triggered interrupts можно почитать в https://venkateshabbarapu.blogspot.com/2013/03/edge-triggered-vs-level-triggered.html)
@wildtuna вообще, анонсировали же асус рог 2025 nuc, вот может он. Не гроб и это по сути приставка для игр.
@wildtuna не люблю гробы :)
@wildtuna ага, для всего, специализированно рабочие у меня и так есть, макбук и дорожный.
@wildtuna смотрел, у легионов и мси охлаждение намного лучше, судя по обзорам. По охлаждению вообще лучше легионов нет, а значит они в играх не тротлят. Роги греются, потому не купил.
@GalacticJew я делал уже все. На винде не перегружается. На линуксе перегружается.
Медитирую, люблю смотреть научпоп лекции в ютубе, гулять. По субботам хожу в баню потом сижу в кондитерской и читаю. Обожаю музеи современного искусства. Предпочту посидеть у озера и посмотреть на горы. Этот инстанс мой. Еще есть канал https://youtube.com/@user-tc9eq9pz2q?si=uPmChHjU3UyZIDET
Демократы, либералы, либертарианцы, анархисты, исламисты, христиане и представители прочих религий никогда не перестанут конфликтовать до тех пор пока не поймут что добрососедские отношения намного ценнее всех их религий.
Я (с)