1 поток - 1 урл

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by vssh, 22 Feb 2012.

  1. vssh

    vssh New Member

    Joined:
    14 Apr 2009
    Messages:
    22
    Likes Received:
    3
    Reputations:
    0
    нужна помощь
    программа отправляет пост запросы на список сайтов, но дело в том, что если сделать 40 потоков, то все 40 потоков отправят запрос на первый сайт, затем на второй, третий и т.д.
    как сделать чтобы первый поток отправлял запрос на первый сайт, второй на второй сайт и т.д.?
     
  2. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    487
    Likes Received:
    184
    Reputations:
    5
    нужен отдельный поток - который будет управлять всеми потоками рабами... (дочерними)
    Вот он и должен распределять задания между потоками... куда и скока раз зайти и т.д.

    Это как в армии... командир построил роту , и сказал кто и где что будет сегодня делать... а солдат выполнив задание докладывает об этом командиру... и тогда командир дает солдату новое задание... если оно есть
     
    #2 rudi, 22 Feb 2012
    Last edited: 22 Feb 2012
  3. vssh

    vssh New Member

    Joined:
    14 Apr 2009
    Messages:
    22
    Likes Received:
    3
    Reputations:
    0
    каким образом это можно реализовать подскажи? или может примерчик есть?
     
  4. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    487
    Likes Received:
    184
    Reputations:
    5
    http://rxlib.ru/WinLesson/bles2_1.htm
     
  5. bertys

    bertys New Member

    Joined:
    25 Jan 2012
    Messages:
    162
    Likes Received:
    0
    Reputations:
    0
    а если через synchronize попробувать.
     
  6. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    487
    Likes Received:
    184
    Reputations:
    5
    synchronize - Скорее используется для безопасного доступа потоков к интерфейсу.... или например файлам...
    Например если какой либо поток в данный момент времени использует какойто объект через synchronize, то другой поток не может получить к объекту доступ, покуда этот объект занят другим потоком.
     
    #6 rudi, 22 Feb 2012
    Last edited: 22 Feb 2012
  7. vssh

    vssh New Member

    Joined:
    14 Apr 2009
    Messages:
    22
    Likes Received:
    3
    Reputations:
    0
    забыл сказать ЯП delphi
    а через критическую секцию тоже никак не сделать?
     
  8. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    487
    Likes Received:
    184
    Reputations:
    5
    Критическая секция это аналог synchronize но для кода...
    Это как бы сделать кусок кода... который может выполняться не одновременно а только в одном экземпляре
    например удаление звеньев из связаного списка.... нельзя же чтобы потоки одновремено чтото удаляли
    потому код удаления или прибаления в свзянный список делаешь критическим.
    Тоесть выполнение участка кода отвечающего за удаление или прибавление звеньев в связаный список не может выполняться одновременно


    Вот пример
    http://www.cyberguru.ru/programming/win32/windows-processes-page12.html
     
    #8 rudi, 22 Feb 2012
    Last edited: 22 Feb 2012
  9. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    487
    Likes Received:
    184
    Reputations:
    5
    Как вариант
    напиши функцию.... которая работает по методу критической секции
    ПРи вызове функции, она должна отдать URL
    И при этом функция запоминает какой URL отдала, чтобы при следующем вызове дать новый URL.

    А вот твои потоки... чтобы получить URL вызывают эту функцию.... и тогда потоки всегда будут получать разные URL
    вот и весь процесс...
     
  10. vssh

    vssh New Member

    Joined:
    14 Apr 2009
    Messages:
    22
    Likes Received:
    3
    Reputations:
    0
    спасибо, попробую
     
Loading...