Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, у меня следующая проблема. У меня есть список типа vector<string>, в котором приблизительно 25 000 строк, суть программы в следующем, нужно в потоках обработать данные строки(строка представляет собой домен для последующего получения ip адресов), как можно быстрее. На данный момент, программа ругается в тот момент, как вызывается первый экземпляр объекта потока, а именно в следующем строке: pthread_join(threads[0], NULL); , дальше не идет программа, в чем может быть проблема? Вот ошибка: dpi kernel: [ 3366.211960] dpi[11554]: segfault at 4 ip b76dc056 sp bf809700 error 6 in libpthread-2.19.so[b76d6000+18000] Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 15:27 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
ariasУ меня есть список типа vector<string>, в котором приблизительно 25 000 строк Это vector<string> domains ? Попробуй оставить 25 строк. Будет работать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 15:39 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Непонятно где инстнциируется &tattr. Может это необязательно но хотелось-бы чтоб сорс был самодостаточный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 15:42 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
И... не знаю реально-ли стартовать 25 тыщ потоков. Тут по идее должнен быть какой-то диспетчер типа Круглый-Робин. А так по коду получается что на каждый домен будет форкнут тред. И + надо анализировать коды возврата. Возможно там где-то что-то падает. http://man7.org/linux/man-pages/man3/pthread_create.3.html On success, pthread_create() returns 0; on error, it returns an error number, and the contents of *thread are undefined. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 15:51 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Можешь потоки на std::thread переделать, там синтаксис попроще и приведение типов не требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 15:51 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Просто не надо создавать 25000 потоков ))) Переделайте алгоритм, чтобы потоков было достаточное, но небольшое число. Например 2*число CPU. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 15:53 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, я думаю что для Linux не очень сложно создать 25 тыщ потоков. Просто ... как-то умеючи надо. Покурить там текущее значение /proc/sys/kernel/threads-max. Покурить откуда оно ставит дефолт. Возможно там какая-то оценочная формула есть. От мемори там или от версии ядра. Но конечно постановка - причудливая. Какой-то DNS сервер.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 16:00 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
maytonAnatoly Moskovsky, я думаю что для Linux не очень сложно создать 25 тыщ потоков. Каждому потоку 1 Мб стэка надо выделить, это 25 Гб адресного пространства. ХЗ выделит ли столько ОС для одного процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 16:04 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Dima TmaytonAnatoly Moskovsky, я думаю что для Linux не очень сложно создать 25 тыщ потоков. Каждому потоку 1 Мб стэка надо выделить, это 25 Гб адресного пространства. ХЗ выделит ли столько ОС для одного процесса. Мы не знаем какое там выделение. Возможно отложенное. У тебя линухЪ под рукой? Глянь плиз чему у тебя равна эта переменная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 16:06 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 16:13 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Ну... всего-лишь в 4 раза меньше Кстати чортов homepage Сергея Брина мне подсказывает что размер стека можно "уплотнить". Волшебная функция нам в помошь. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 16:16 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
По поводу "&tattr" описался, когда писал сообщение, в реальном коде этого куска уже нет давно. Вроде установка 20 потоков решило проблему, я пытался экспериментировать с количеством одновременных потоков, хотя сколько примеров не смотрел, нигде не описано максимальное чисто одновременных потоков. По поводу максимального числа потоков в системе у меня следующий вывод: Код: plaintext 1. 2. Всем спасибо, буду дальше разбираться с кодом. Сложно вспоминать C++, после того, как пару лет пришлось писать на PHP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 17:29 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
ariasПо поводу "&tattr" описался, когда писал сообщение, в реальном коде этого куска уже нет давно. Было-бы очень продуктивно приводить актуальный исходник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 17:39 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
ariasхотя сколько примеров не смотрел, нигде не описано максимальное чисто одновременных потоков. Одновременно может выполняться столько потоков, сколько логических процов доступно ОС. Где-то их 2 где-то 40 и больше. Если в очереди на исполнение больше, то это только вызовет лишние тормоза из-за переключения потоков. Потом зависит от того что твои потоки делают, если поток ждет ввод/вывод, то в это время проц может другой поток поработать. Создание потока тоже не дешевое действие, поэтому обычно делают пул потоков, которые висят и ждут задания, есть задание - обработали, дальше ждут. Как у тебя написано: создать поток ради пары строк кода, это как купить квартиру чтобы разок переночевать. Почитай какую-нибудь книжку про многопоточность. Это нездоровая строчка Код: plaintext 1. в современном С++ это можно, но при больших n будут проблемы, т.к. массив создается на стэке, а стэк всего 1Мб. маленькие массивы можно так делать, а с большими аккуратно, лучше заменить на vector. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 18:11 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Дим ты не совсем прав. Твоя формула "логических процов" справедлива для численных методов. Но ты открой свой собственный диспетчер задач и посмотри сколько процессов и сколько потоков в каждом (если Windows). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 18:20 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
maytonДим ты не совсем прав. Твоя формула "логических процов" справедлива для численных методов. я формулы не давал, попытался объяснить что универсальной формулы нет, а для конкретного приложения ее надо выводить с учетом особенностей приложения, может не очень понятно написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 19:05 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Если выкинуть всякий лишний мусор типа логгирования то поток делает 1 единственный полезный вызов Код: plaintext 1. и его архитектуру следует обсуждать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 19:16 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
maytonи его архитектуру следует обсуждать. Тут обсуждать особо нечего, надо самодельный запрос DNS-серверу. Тут протокол DNS надо поизучать чтоб не слать 25000 UDP пакетов. Вроде по TCP тоже можно. 1 поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 19:30 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Вики пишет Протокол DNS использует для работы TCP- или UDP-порт 53 для ответов на запросы. Традиционно запросы и ответы отправляются в виде одной UDP-датаграммы. TCP используется, когда размер данных ответа превышает 512 байт, и для AXFR-запросов. Да тут надо раскурить особенности протокола и подстроить под него софт. Тоесть не DDOS-ить бедного провайдера а настроить некую номинальную скорость при которой нет шейпинга и авто-ограничителей. Я-бы еще обратил внимание на возможные дубли доменов. Кстати используя свойство распределённости DNS, запросы можно слать во много направлений пока хватает сетевого канала. Это КМК более благоприятный путь оптимизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 19:48 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
ИМХУ не тот случай. Слать на ближайший. 25000 запросов это не много, не DDoS. Чуть нагрузят сервер, но максимум за секунду на все ответит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 20:07 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
25 тысяч пакетов.... вобе стороны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 20:56 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Можно попробовать поднять локальный DNS, и спрашивать у него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 21:06 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
maytonне очень сложно создать 25 тыщ потоков Шею себе сломать тоже не сложно, и что? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 22:46 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
mayton25 тысяч пакетов.... вобе стороны. Чтобы обрабатывать 100К пакетов объемом 1Гбит в секунду хватает недорогого 4 ядерного проца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 22:54 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
ТС уже "отвалился", но, никто из отвечающих, не выспросил у него: "а на фейхуа" ему собирать DNS-info многопорочно :). Получение информации ограничено скоростью канала. И наплевать на то, сколько потоков (процессов) стучится в него с запросами . Ибо создание и запуск процессов в Linux ныне (на современных процессорах) заведомо быстрее ответов от DNS сервера. Получается от кучи процессов профита нет, а ОЗУ кушаем. И то, если настройки ядра ОС позволят столько процессов (потоков) создать и, соответственно, запустить. Функция gethostbyname( как, справедливо заметил mayton, единственно payload в приведенном фрагменте кода), помнится, синхронная? Еще минус в копилку "кучи процессов", опять же из-за памяти. А поднятие локального DNS не очень-то похоже на здравый совет, ибо задача, обрисованная ТС, оченно похожа на "кеширующий DNS на этапе построения таблицы". В итоге: неизвестно, чего хотел ТС, но советы от Dima_T, mayton довольно во многом применимы. Сказанное Анатолием (Anatoly Moskovsky) может и должно (но не все) быть принято к сведению. Засим откланиваюсь, ибо не совсем трезв. Поздравьте нас (я, сестра и зять) с рождением нового Тамерлана ;). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 00:05 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
P.S. А ежели ТС пытается писать софт для коммутаторов "многогигабитных" тем более подобную модель поведения -> Шервуд (лесом, короче). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 00:19 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Так не надо тут никого в Шервуд посылать. Иди бухай себе с миром ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 00:26 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
maytonИ... не знаю реально-ли стартовать 25 тыщ потоков. Тут по идее должнен быть какой-то диспетчер типа Круглый-Робин. не то, чтобы нереально, но просто напросто бессмысленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 23:18 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
maytonДим ты не совсем прав. Твоя формула "логических процов" справедлива для численных методов. Но ты открой свой собственный диспетчер задач и посмотри сколько процессов и сколько потоков в каждом (если Windows). все он прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 23:21 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
На самом деле для этой задачи вообще многопоточность не нужна. Нужно асинхронное выполнение заданий в одном потоке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 23:31 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyНа самом деле для этой задачи вообще многопоточность не нужна. Нужно асинхронное выполнение заданий в одном потоке. Да это было-бы самое правильное. Интересно почему автор с этого не начал? А оптимизация - это было-бы уже фаза номер 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 10:47 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
почитал тему. поржал. вобще поржал. 25 000 потоков! столько я не делал даже для неронной сети )) есть http://docs.libuv.org/en/v1.x/dns.html есть boost.asio есть std::thread, но поток нужен максимум один - для io_loop. если тс надо, могу скинуть uvbind который я недавно написал для себя (обертка над libuv, очень простая, только там нет dns, надо прикрутить). мне кажется от 25 000 потокв система загнется (если они все хотят попасть на процессор а не ждут своего io). но может и нет, я не эсперементировал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 23:21 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
alexy_blackпочитал тему. поржал. вобще поржал alexy_blackесли тс надо, могу скинуть uvbind который я недавно написал для себя (обертка над libuv, очень простая, только там нет dns, надо прикрутить). Сам поржал - дай другому. ТС вообще-то как раз DNS и нужен, нафига ему обертка которая этого не умеет, проще с нуля сделать . Вот накидал за 5 минут. Асинхронно выводит все IP указанных хостов или ошибку если хост не найден. В одном потоке. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2016, 01:36 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, Мне кажется, можно упростить boost::asio::ip::tcp::resolver::iterator end => cpp::end of use ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2016, 01:55 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Siemargl, Вернемся к этому вопросу через 10 лет, когда про D уже забудут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2016, 02:01 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskySiemargl, Вернемся к этому вопросу через 10 лет, когда про D уже забудут Про D может и забудут, хотя он тут не упоминался. Но такой синтаксис ++ еще вопрос сколько народа будет использовать. Лично я - уже маловероятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2016, 02:39 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
SiemarglПро D может и забудут, хотя он тут не упоминался. Ну, это единственный реальный кандидат на cpp::end of use. Рад что вы осознаете его шансы ))) А остальные поделки в лучшем случае могут друг друга заменить )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2016, 03:03 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
С буст-асио код смотрится тяжеловато. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2016, 15:23 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
maytonС буст-асио код смотрится тяжеловато. Напишите за 5 минут любой другой аналог - сравним ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2016, 15:40 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskymaytonС буст-асио код смотрится тяжеловато. Напишите за 5 минут любой другой аналог - сравним Увы не смогу. Я уже давно не участник олимпиад и хакатонов и я ничего не пишу за 5 минут. Но я попробую на досуге написать DNS-резольвер только надо найти хороший список хостов в количестве 25 0000 строк чтоб смоделировать 1 тест на корректность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2016, 16:02 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
maytonС буст-асио код смотрится тяжеловато.если не ошибаюсь тут не нужно будет даже подключать какую-нибудь библиотеку, это только заголовочная библиотека. что тут тяжолово? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2016, 20:12 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Сорс тяжело читать. Если-бы я делал это на Java то это наверное был-бы Fork-Join пул потоков в качестве платформы для исполнения и лямбды в качестве описания алгоритма. Благо он прост. Надо взять поток строк из файла и передать их набору исполнительных потоков для DNS-ресольвинга и результат куда-то слить в коллекцию. Я еще с лямбдами пока на "вы" но наверное кто-то напишет это быстрее меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2016, 21:25 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
arias Код: plaintext 1. 2. 3. Лучше передавать по const-ссылке, чтобы не копировать контейнер: Код: plaintext 1. Shaman_IstмногопорочноОтличный термин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 03:29 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Многопорочно - это прямо про отладку асио, удачное определение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 08:45 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky....Вот накидал за 5 минут. Асинхронно выводит все IP указанных хостов или ошибку если хост не найден. В одном потоке. maytonСорс тяжело читать. Если-бы я делал это на Java то это наверное был-бы Fork-Join пул потоков в качестве платформы для исполнения и лямбды в качестве описания алгоритма..... ???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 09:02 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskymaytonС буст-асио код смотрится тяжеловато. Напишите за 5 минут любой другой аналог - сравним В тему cpp::end of use 40 секунд..... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 09:33 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Да это любой Unix-админ сделает. Автору покажите. Ему ж на сях надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 10:22 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
maytonДа это любой Unix-админ сделает. Автору покажите. Ему ж на сях надо... На сях такие вещи надо писать в случае необходимости глубокого тюнинга сетевого протокольного взаимодействия Для общих случаев и стандартных протоколов есть масса готовых инструментов и полуфабрикатов типа xinetd, netcat, nginx, haproxy, etc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 10:35 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
maytonДа это любой Unix-админ сделает. Автору покажите. Ему ж на сях надо... Многих начинающие в Unix сбиваются с пути истинного... потоки и мутексы это не Unix-way. Unix way - это процессы, конвееры и классический IPC ( разделяемая память, семафоры, очереди, сокеты). Сбившись один раз с пути люди начинают изобретать костыли по поводу и без.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 11:03 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
д0kВ тему cpp::end of use 40 секунд..... Код: plaintext 1. Это не то что требовалось. Надо параллельно резолвить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 11:24 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
UNIX - это конструктор-лего в нем есть в том чисте и нити с мутексами и в нем нужно уметь писать на С, но очень часто в этом нет необходимости. Я никоим образом не пытаюсь начать холивар :) Я о том что Юникс создавался инженерами для инженеров в классической UNIX архитектуре ПО , не составляет никакого труда заменить модуль в конвеере обработки алгоритма с С-шного на перловый, башовый, питоновый и наоборот с минимальными накладными расходами.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 11:32 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Мы не конструктивны по отношению к автору. И мы не можем подменять ТЗ просто так по своему умозрению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 11:41 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
maytonМы не конструктивны по отношению к автору. И мы не можем подменять ТЗ просто так по своему умозрению. Форкнуть 5 .. 10 .. 20 ... 100 или какая степень паралелизма ему там нужна nslookup и по факту прихода сигнала SIGCHLD запускать следующий форк из списка доменов постоянно поддерживая нужно степень паралелизма. Пока nslookup-ы резолвят , процесс их запустивший парсит резульатты... Обработка SIGCHLD не потребует никиких примитивов синхронизации ( мутексов семафоров итд ) , всю работу сделает ядро переклчением контекста основного кода и обработчика сигнала ( в простонародии колбеком) ... Если ТС Unix way не нравится , пусть пишет свой арбитр нитей в соотвествии с ТЗ. ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 12:02 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyд0kВ тему cpp::end of use 40 секунд..... Код: plaintext 1. Это не то что требовалось. Надо параллельно резолвить. Не вижу проблем запустить резолвинг в паралель ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 12:07 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Учитывая что DNS - достаточно быстрая услуга и имеет бесконечно большое количество зеркал (availability, partition tolerance) - то задача по сути сводится к толщине канала. Пока сеть выдерживает - можно увеличивать параллелизм. Но помня природу самих DNS-записей я-бы больше делал акцент на их длительное хранение. На самом деле только 1-й запуск этого приложения будет продуктивен. Повторные - скорее всего будут бегать по тем-же записям. Это такое моё предположение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 12:13 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
maytonУчитывая что DNS - достаточно быстрая услуга и имеет бесконечно большое количество зеркал (availability, partition tolerance) - то задача по сути сводится к толщине канала. Пока сеть выдерживает - можно увеличивать параллелизм. Но помня природу самих DNS-записей я-бы больше делал акцент на их длительное хранение. На самом деле только 1-й запуск этого приложения будет продуктивен. Повторные - скорее всего будут бегать по тем-же записям. Это такое моё предположение. без админа тыкать пальцем в небо смысла малоGenerally, DNS propagation takes 24 to 48 hours to complete whenever any changes are made to the Zone File. Lowering the TTL prior to making the change will reduce the time for propagation. У меня ощущение , что либо консерватории проекта что то с камертоном , либо уровень ТС не дотягивает до нужной проекту квалификации... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 12:26 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Местные регистраторы гарантировали что через 24 часа доменное имя будет доступно. Хотя ... вся эта постановка зыбкая. На консистетность забили большой болт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 12:43 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
maytonУчитывая что DNS - достаточно быстрая услуга и имеет бесконечно большое количество зеркал (availability, partition tolerance) - то задача по сути сводится к толщине канала. Задача сводится к настройке на Linux машине кеширующего ДНС. с которым приложение рабоатет по 127.0.0.1 и не заморачивается с собственним внутренним кешем для резолвинга..... Если кеширующий ДНС ранее уже не взлетел по каким либо причинам, то вопросы который задает ТС не внушают мне оптимизма , что он сделает кеш лучше, чем готовый кеширующих ДНС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 12:47 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
д0kНе вижу проблем запустить резолвинг в паралель Ну так и напишите за 40 секунд, а не хвалитесь однострочным хеллоуворлдом не по теме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 14:12 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Я-бы сказал что тут параллель как таковая не особо нужна. Тут скорее - грамотное разбиение исходных данных на N частей (планирование). Запуск N jobs. И слияние их результатов в логи. Практически нет concurrency. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 15:16 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyд0kНе вижу проблем запустить резолвинг в паралель Ну так и напишите за 40 секунд, а не хвалитесь однострочным хеллоуворлдом не по теме 2 минуты :) Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 15:47 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
В оракле есть такая очень удобная функция. Ora_hash(). Вот пример ее юзания. Выборка гео-Ip адресов будет равномерно разбита на 2 группы: Код: plsql 1. Код: plsql 1. Одну можно передать 1-му джобу и вторую другому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 15:57 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
А вот тут на выбор аж 7 DNS провайдеров http://beebom.com/best-dns-servers/ + у каждого целая пачка primary/secondary. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 16:36 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
д0k, Код: plaintext 1. а что будет если запустить сразу 25000 штук? Код: plaintext 1. а что будет если к этому моменту не все джобы завершатся? Я смотрю, вы тот еще доктор, умеете удалить гланды через одно место ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 16:57 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyд0k, Код: plaintext 1. а что будет если запустить сразу 25000 штук? Код: plaintext 1. а что будет если к этому моменту не все джобы завершатся? Я смотрю, вы тот еще доктор, умеете удалить гланды через одно место Тут я майтоном согласен , нужно сначало думать а потом писать на скорость ... 1. можно проверить... 2. проверку на завершение нужно добавить. После размышлений я бы по другому сделал порезал бы файл со списком доменов на нужное количество под паралеллизм и скормил бы файлы паралельно выполняющимся nslookup -ам перанаправив их содержимое в stdin а stdout парсеру ... Anatoly MoskovskyЯ смотрю, вы тот еще доктор, умеете удалить гланды через одно место Я по всякому могу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 17:36 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Парни, чего вы за всякую .уйню зацепились? ТС давно пропал если чо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 19:55 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
ТС уронил гугловский ДНС ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 20:01 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
свой резолвер писать ещё не предлагали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 22:28 |
|
||
|
Linux C++ потоки
|
|||
|---|---|---|---|
|
#18+
Как молоды мы были.. хочется вновь и вновь перечитывать книги Стивенса ;) сорри, не стал читать всю ветку, автору можно порекомендовать потоки Буста, если конечно вы о них не знаете, либо ограничены в их использование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2016, 11:38 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2018450]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 209ms |

| 0 / 0 |
