|
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
|
|
Обработка поступающих данных без задержки основного цикла17.06.2011, 00:51. Показов 4802. Ответов 42
Метки нет (Все метки)
Получаю из какого-то соединения днс адреса сайтов. Считываю их из буфера в цикле. Один цикл - один днс. Нужно чтобы каждый днс переводился в ip и этот ip заносился вконец вектора. Но при этом основной цикл не должен тормозиться ни на миллисекунду, а функция преобразования dns -> ip всилу наличия пинга между моим компом и днс сервером и всилу наличия задержки у самого сервера - очень сильно тормозит... иногда на время более одной секунды. Что посоветуете в данном случае?
0
|
|
| 17.06.2011, 00:51 | |
|
Ответы с готовыми решениями:
42
Библиотека BASS (un4seen): возможна ли обработка звука в реальном времени без существенной задержки? Обновление данных в базе без задержки Обработка поступающих вложений doc |
|
|
|
| 17.06.2011, 22:15 | |
|
1
|
|
|
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
|
|
| 17.06.2011, 22:31 [ТС] | |
|
niXman, да нет, почему же жесть, async_resolve хорошее решение... но при многопоточности в отдельном потоке можно сразу попутно решать и другие задачи подобного рода, pthread является более универсальным решением...
0
|
|
|
|
|||
| 17.06.2011, 22:55 | |||
![]() ![]() Добавлено через 6 минут вах! так ты же еще и с сокетом работаешь! самое время задуматься над использованием asio. и тут: https://www.cyberforum.ru/faq/thread317829.html
0
|
|||
|
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
|
|
| 17.06.2011, 23:17 [ТС] | |
|
У меня сейчас работает сервачек, написанный на селектах, держет не более 10 тыс соединений. Пол года назад здесь кто-то убеждали что лучшее решение epoll, а потом ещё один человек в аське рекомендовал использовать именно его, утверждая что приложение без всякой нагрузки потяент больше 50 тыс соединений ... на asio потянет еще больше?
0
|
|
|
|
|||||
| 17.06.2011, 23:34 | |||||
|
100 потоков со стами селектами? оО ибо на селект не рекомендуется и 1000 дескриптор вешать ![]() моя система говорит что может мониторить 324608. многовато как-то...
0
|
|||||
|
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
|
|
| 17.06.2011, 23:34 [ТС] | |
|
Вообще я не очень представляю себе как это работает... мне говорили что основная нагрузка именно в моем приложениии создается переключением между дескрипторами - поэтому распараллеливание не ускоряет работу таких приложений.. и я в тупике. Единственное решение нашел в будущем сделать несколько серваков и перегонять трафик между ними, так чтобы количество соединений между ними распределилось поровну...
0
|
|
|
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
|
|
| 17.06.2011, 23:38 [ТС] | |
|
Ошибся, я имел ввиду именно своё приложение
![]() От темы отошли, нехорошо...
0
|
|
|
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
|
|
| 17.06.2011, 23:42 [ТС] | |
|
Ещё один вопросик, если основную нагрузку создает переключение между дескрипторами, дескрипторы у каждого потока свои, и получается я могу снизить нагрузку созданием нескольких потоков, равномерным распределением дескрипторов по ним и сделать чтобы каждый рассылал данные по своим дескрипторам?
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
||
| 18.06.2011, 12:18 | ||
|
И 50к конектов (если они не просто висят, а есть какой-то трафик) тоже почти утопия. А так да, например Сысоев показывал 100k конектов, только вот nginx при этом еле ворочался. Да и во обще если говорить о высоко нагруженных сетевых приложениях, на мой взгляд лучше забыть про Си и смотреть на Erlang Что, касается топика, к сожалению asio_resolver только ускорит процесс, но не снимет нагрузку, а наоборот создаст ее, т.к. использует системные getXXXbyYYY_r() Если же нужно и ускориться и не плодить оверхед на создание нитей, то лучше взять какую-нибудь библиотеку работающую с DNS самостоятельно, без системы, и (опционально) запускать ее в отдельном потоке. В качестве минуса это будет только DNS без всех возможностей NSS, а в качестве плюса если захочется что-то отличное от A/AAAA/PTR то ни вопрос.
1
|
||
|
Формучанин
364 / 296 / 42
Регистрация: 02.11.2010
Сообщений: 1,245
|
|
| 18.06.2011, 13:49 | |
|
под сетевым интерфейсом какраз и понимается пара ип:порт, это может быть как вай фай карта, так и впн соединение.
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 18.06.2011, 14:37 | |
|
А я всю жизнь считал, что это зовется transport-level endpoint... ну да ладно.
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 18.06.2011, 17:25 | |
|
Поясняю, boost _не_ умеет работать с DNS сам, он всего лишь содержит обертки к системному ресолверу. Ни в glibc, ни в libc нет и вряд ли когда либо появятся не блокируемые функции для разрешения имен. Пояснять, что обертка делающая из блокируемой функции не блокируемую стоит дорого в плане ресурсов надо?
Так же по моему очевидно, что если можно пожертвовать files/nis/etc которые умеет системный ресолвер и взять что-то маленькое и быстрое типа adns или asr, то будет и быстрее и легче чем обернутое семейство getXXXbyYYY(), за одного появиться возможность ресолвить MX/NS/etc и использовать DNS сервера не из resolv.conf
0
|
|
|
|
|||
| 18.06.2011, 22:43 | |||
|
второе - "стоит дорого в плане ресурсов надо" - ну простите, я не заметил что сабж предполагается использовать на МК. третье - async_resolve я предложил для того, чтоб ТС`у не пришлось делать то, что ему нарекомендовали на второй странице(потоки/очередь/блокировки). четвертое - насколько я понял его архитектуру и проблему, я представил, что если резолв сделать асинхронным по отношению к тому потоку в котором у него что-то выполняется, то это избавит его от тормозов которые мешают каким-то вычислениям. а кода при этом - понты ![]() спасибо.
0
|
|||
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 20.06.2011, 11:36 | |
|
Вы уж простите, ну "не калькулятор" ни разу не аргумент. Помниться ТС говорил про что-то типа 30 итераций в секунду, т.е. получиться 30 нитей, вроде и не очень много, но вот зачем???
Касательно "не придется делать и понты" вы же думаю прекрасно понимаете, что в потрохах async_resolv примерно тот же код, что и предлагается ТС, вот только вместо оптимального решения с одним потоком и очередью либо сразу куча потоков либо один поток на n имен. Писать то да, меньше, с этим никто не поспорит. А вот качество решения получается хуже.
0
|
|
|
|
|||
| 20.06.2011, 12:11 | |||
![]()
0
|
|||
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 20.06.2011, 12:21 | |
|
про палец не понял.
Речь не о качестве кода, а о качестве решения. Если вы считаете ,что не в состоянии родить ничего лучше чем универсальные, а следовательно далеко не оптимальные решения boost, то могу только посочувствовать, но все таки думаю, что произошло не до понимание контекста.
0
|
|
| 20.06.2011, 12:21 | |
|
Обработка строк, поступающих через COM порт Реализация задержки с использованием цикла Передача данных в регистр без использование цикла Scanner без задержки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|