Ответы пользователя по тегу Многопоточность
  • Почему при огромном количестве HTTP-запросов DNS не резолвит домены?

    begemot_sun
    @begemot_sun
    Программист в душе.
    А у меня есть решение, которое может отресолвить кучу DNS используя сторонние DNS-сервера. Скажем есть лист из 30к таких DNS-серверов, моё решение может взять 4 ГБ файл (емайлов) и отресолвить MX и A записи за время порядка 40 минут для обычного сервера без наворотов. Если интересно, то можно адаптировать под ваши нужды.
    Ответ написан
    Комментировать
  • OpenCV многопоточный поиск в видео?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Файл лежит на диске, в случае одно поточной программы вы последовательно, байт за байтом, читаете файл.
    В случае многопоточной, диск вынужден головкой крутить туда и сюда, т.е. время доступа к данным увеличивается.
    Т.о. диск может быть узким местом для вашей системы. То что показывает загрузку 100% для процессоров - это ни о чем не говорит.

    Второй вариант: внутри OpenCV возможно есть какой-то разделяемый ресурс, который не может быть использован одновременно всеми потоками. Т.о. возможно (я не специалист), достаточно скомпилировать OpenCV с поддержкой многопоточности.
    Ответ написан
    Комментировать
  • Как один сетевой сокет обрабатывает много соединений?

    begemot_sun
    @begemot_sun
    Программист в душе.
    У каждого клиента есть исходящий порт и IP. Соответственно ОС может определить в какой сокет отправлять данные когда пришел TCP пакет.
    Ответ написан
    Комментировать
  • Как сохранить результат 200+ потоков в БД?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Самое универсальное решение - это конечно очередь заданий. Не увлекайтесь созданием коннектов к БД. Лучше иметь немного коннектов, но которые работают быстро, чем кучу - но которые работают медленно.

    На крайняк, всегда можно написать решение (аля на Erlang), которое будет брать работу по распараллеливанию на себя, вам нужно лишь будет вызвать нужный http-api такого сервера и получить ответ.

    Чтобы БД работала быстро, можно поставить кучу mysql slave серверов, и обращаться также к ним. Писать конечно получится только на один. А вообще все зависит от вашей задачи. У вас скупое описание того, что вы хотите делать и для чего.
    Ответ написан
  • Как ускорить число потоков в секунду (сравнение потоков в elrang и c#)?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Следует различать потоки ОС и процессы в Erlang. Я не в курсе про C#, но насколько понимаю он делает потоки ОС (они очень тяжеловестные), чтобы сделать поток ОС надо сделать кучу дел.

    Процессы Erlang в противовес потокам очень легковесны, например в памяти занимают минимум 512 байт, быстро создаются, быстро убиваются. ОС не знает об этих процессах, всю работу по обслуживанию (одновременному выполнению на доступных ядрах) берет на себя Erlang.

    В ОС вы можете сделать ограниченное кол-во потоков, до 5000.
    В Erlang вы можете множить процессы как вам вздумается, главное чтобы памяти хватило. Порядок числа 100000-1000000.

    P.S. Добавьте тег Erlang.
    Ответ написан
    2 комментария
  • Как освоить многопоточность?

    begemot_sun
    @begemot_sun
    Программист в душе.
    А можно не использовать C++ с его дедлоками, и работой с памятью. Достаточно поменять инструмент решения проблемы. Например взять Erlang, где проблемы параллельного программирования сведены к минимуму + можно подключать C\C++\что-то еще вставки для быстродействия.
    Ответ написан
  • Распределенная и/или многопоточная работа с сетью?

    begemot_sun
    @begemot_sun
    Программист в душе.
    1. Использовать много разных DNS для ресолвинга имен.
    2. Использовать многопоточный парсер, который будет создавать 100000 потоков для парсинга + 1000 для определения доменного имени + увязать это все одно целое. Как вариант использовать для этого дела Erlang ;)
    Ответ написан
    1 комментарий