Обмен данными между потоками

Поддержка
    1. Мне необходимо создать один основной поток, который будет прокладкой (на нем загружен сайт)
    2. Много "рабочих" потоков, которые делают всю работу одновременно, но необходимо, чтоб каждый "рабочий" поток не загружал сайт, который в основном потоке, а лишь обращался к первому потоку с набором данных, в ответ первый поток отдавал ответ и уже с этим ответом работать

    Возможно ли реализовать и как этого достичь?

    Примерно так
    Поток 1: загружает сайт калькулятор.ру

    Поток 2: посылает данные потоку 1 (2+2), получает ответ и выводит "Результат вычислений - 4"
    Поток 3: посылает данные потоку 1 (3+3), получает ответ и выводит "Результат вычислений - 6"
    Поток 4: посылает данные потоку 1 (4+4), получает ответ и выводит "Результат вычислений - 8"
    Поток 5: посылает данные потоку 1 (5+5), получает ответ и выводит "Результат вычислений - 10"

    Игрался с асинхронным вызовом, но у меня создавался полноценный поток, а не работал с первым

  • @Teror2 said in Обмен данными между потоками:

    1. Мне необходимо создать один основной поток, который будет прокладкой (на нем загружен сайт)
    2. Много "рабочих" потоков, которые делают всю работу одновременно, но необходимо, чтоб каждый "рабочий" поток не загружал сайт, который в основном потоке, а лишь обращался к первому потоку с набором данных, в ответ первый поток отдавал ответ и уже с этим ответом работать

    Возможно ли реализовать и как этого достичь?

    Примерно так
    Поток 1: загружает сайт калькулятор.ру

    Поток 2: посылает данные потоку 1 (2+2), получает ответ и выводит "Результат вычислений - 4"
    Поток 3: посылает данные потоку 1 (3+3), получает ответ и выводит "Результат вычислений - 6"
    Поток 4: посылает данные потоку 1 (4+4), получает ответ и выводит "Результат вычислений - 8"
    Поток 5: посылает данные потоку 1 (5+5), получает ответ и выводит "Результат вычислений - 10"

    Игрался с асинхронным вызовом, но у меня создавался полноценный поток, а не работал с первым

    А смысл в таком случае использовать многопоток?

  • @Fox Софт на запросах и потоки 2-5 не должны использовать браузер отдельно, дабы оптимизировать немного

    Грубо говоря нужен всего один GET запрос к первому потоку, который выполнит задание и отдаст ответ

  • @Teror2 said in Обмен данными между потоками:

    @Fox Софт на запросах и потоки 2-5 не должны использовать браузер отдельно, дабы оптимизировать немного

    Грубо говоря нужен всего один GET запрос к первому потоку, который выполнит задание и отдаст ответ

    Запросы итак работают отдельно от браузера. Повторю вопрос, для чего многопоток использовать?

  • @Fox
    как минимум каждый поток в последствии будет под разным ip ходить

    Использовать без прокладки не получиться - сайт под защитой cloudflare и требует наличие открытого браузера, по этому первый "get запрос" напрямую к нужному сайту выбьет ошибку доступа, по этому необходим один работающий поток/программа, которая и будет отдавать ответ на первый запрос

    второй запрос в потоке уже летит на другой сайт и там не нужно использовать браузер

  • @Teror2 said in Обмен данными между потоками:

    @Fox
    как минимум каждый поток в последствии будет под разным ip ходить

    Использовать без прокладки не получиться - сайт под защитой cloudflare и требует наличие открытого браузера, по этому первый "get запрос" напрямую к нужному сайту выбьет ошибку доступа, по этому необходим один работающий поток/программа, которая и будет отдавать ответ на первый запрос

    второй запрос в потоке уже летит на другой сайт и там не нужно использовать браузер

    Вы можете менять прокси только в http-клиенте и передавать куки из браузера после сброса http-клиента в одном и том же потоке

  • @Fox
    логика такая

    1 открыт сайт под защитой клауда

    2-5 посылает код первому потоку, первый поток исполняет и отдает ответ (те самые куки), далее под прокси посылается запрос на второй сайт с уже этими куками

    Смысл каждому 2-5 потоку грузить первый сайт каждый раз
    А под прокси лишь запросы на второй сайт, первый сидит на одном айпи

  • @Teror2 said in Обмен данными между потоками:

    @Fox
    логика такая

    1 открыт сайт под защитой клауда

    2-5 посылает код первому потоку, первый поток исполняет и отдает ответ (те самые куки), далее под прокси посылается запрос на второй сайт с уже этими куками

    Смысл каждому 2-5 потоку грузить первый сайт каждый раз
    А под прокси лишь запросы на второй сайт, первый сидит на одном айпи

    Вы так и не сказали, нафига в этой задаче многопоток, какую проблему он решает? Первый поток загружает сайт в браузере, далее в этом же потоке происходит работа на запросах, они ни как не связаны с браузером.

    Короче раз вам так принципиально - используйте глобальную переменную для передачи любых необходимых данных

  • @Teror2 said in Обмен данными между потоками:

    Поток 2: посылает данные потоку 1 (2+2), получает ответ и выводит "Результат вычислений - 4"
    Поток 3: посылает данные потоку 1 (3+3), получает ответ и выводит "Результат вычислений - 6"
    Поток 4: посылает данные потоку 1 (4+4), получает ответ и выводит "Результат вычислений - 8"
    Поток 5: посылает данные потоку 1 (5+5), получает ответ и выводит "Результат вычислений - 10"

    Вы хотите в много потоке под одними куками задрочить Клауд? Ничего не выйдет. Резать будет по частоте обращений.

    А вообще описание задачи так себе, вам действительно нужно знать 2+2 с калькулятор.ру?

  • @Bigma ничего не режет, мне нужно избежать запуска браузера в каждом потоке и загрузки сайта

    Как вариант сейчас вижу отдельную программу/сервер, которому буду посылать запрос, он исполнять код и отдавать ответ

  • В глобальную переменную клади куки из основного потока, в асинхронной не используй браузер бери куки из этой переменной а гетами дергой то что нужно

  • @Bigma так в глобальной переменной должны быть разные куки для каждого потока

    поток 2 шлет первому 2+2 и получает ответ 4 и уже делает запросы на основе ответа
    поток 3 шлет первому 3+3 и получает ответ 6 и т.д.

  • @Teror2 в смысле разные? Если разные то без запуска браузера не получится. Делай два скрипта - первый формирует задания, в однопотоке. Второй в много потоке выполняет эти задания. Но они будут каждый запускать браузер.