[Delph] Начал изучать многопоточность, правильный ли код???

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Vasa2, 10 Jan 2012.

  1. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    Здравствуйте, начал изучать потоки, написал свой первый код с многопоточностью, но он плоховато работает. Суть программы такова, отсылает данные на сайт, а точнее логин, и в ответ получает существует ли такой пользователь.

    При тестировании программы, она выдавала не правильные данные, записывала существующие логины в не существующие, и наоборот. Тестировалось при 100 потоках.

    Вот сам код:

    ПРОБЛЕМА РЕШЕНА ВСЕМ СПАСИБО

    Подскажите что не правильно в коде.

    Заранее спасибо
     
    #1 Vasa2, 10 Jan 2012
    Last edited: 11 Jan 2012
  2. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Везде используется одна глобальная переменная kilk. Нужна хотя бы одна локальная. Увеличил значение kilk - записал его в локальную переменную. Ну и далее в процедуре TNewThread.rezu вместо kilk используешь свою локальную переменную и все будет норм. Хотя м. б. есть еще неточности.
     
    #2 Chrome~, 10 Jan 2012
    Last edited: 10 Jan 2012
  3. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    Та я тоже ошибки вроде не вижу, но почему же логины идут в невалид, а не валидные в валид? Может потоков много?
     
    #3 Vasa2, 10 Jan 2012
    Last edited: 10 Jan 2012
  4. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Мб Тс Мемо1 и Мемо2 местами попутал?
    З.Ы. Харе мучить систему. Разрушай объекты после использования...
     
  5. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    Если ставлю 1 поток, программа работает отлично, вручную перепроверял
     
  6. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    А как же мне тут без глобальных, текст загружается в масив, и масив в потоках используется
     
  7. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    Спасибо, вроде все отлична пашет, заменил масив на переменную, всем спаибо
     
  8. Tip.the.besT

    Tip.the.besT Member

    Joined:
    24 Jun 2009
    Messages:
    267
    Likes Received:
    10
    Reputations:
    4
    А чем плохи критические секции и метод синхронайз? К сожалению я не успел посмотреть код ТСа.
     
  9. Tip.the.besT

    Tip.the.besT Member

    Joined:
    24 Jun 2009
    Messages:
    267
    Likes Received:
    10
    Reputations:
    4
    Ну да будет тормозить если потоков с 30+ начать общаться с гуи, но зачем обязательно в гуи всё отправлять, сохраняй в файл при завершении последнего потока отправь в гуи результат. По идеи можно всё реализовать без дополнительных классов, если с умом подойти.
     
  10. Tip.the.besT

    Tip.the.besT Member

    Joined:
    24 Jun 2009
    Messages:
    267
    Likes Received:
    10
    Reputations:
    4
    По уму, и с умом - это разные вещи :)
    Вот именно потому, что может быть целая "простыня" я и говорю, что лучше общаться с файлом, а не с гуи. Плюс ты мне идею подкинул, что лучше делить файл паролей на несколько частей если в нём много строк.