[Delphi] Многопоточность в программе

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

  1. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    учитывая что ТС вообще дупля не отбивает что такое программирование (даже на уровне копипаст+доделать под себя), а читать литературу ленится
    то гадать можно долго
     
  2. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    Наверное первое, чтобы я мог посоветовать это писать код красиво, для дальнейшего нормального его разбора.
    А второе как выше было уже сказано посмотреть где ошибка, через отладку и получить ответ на свой вопрос.
    Поставить бряк и по шагам отладить в один поток или в два не составит я думаю труда.
     
  3. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    в багато-поточних покрокове виконання далеко не завжди допомагає (може вибити помилку на 2+2 якщо в цей час якийсь поток щось не то зробив)
     
  4. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Логирование - наше всё.
    Можно отследить где, когда и почему умер поток.
    _____________________________________
    т.к. большинство пользователей все-же русскоязычные, не могли бы Вы переходить на русский язык?
    боюсь могут возникнуть проблемы с пониманием некоторых слов и фраз в целом. а гуглтранслейт обычно коряво переводит :(
     
  5. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    не всегда... если есть например 15 рядков... на каждій try except ставить?
    правда ’странніе’ ошибкі бівают в основном в двух случиях:
    1) залез в чужой участок памяти (Arr[Length(Arr)]:=232)
    2) обращаешса к форме без синронизации
    (у меня біло такое... долго искал почему на рядку a:=b поднимает исключения)

    у меня писмений руский как у грузина(
     
  6. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    может подойдот для примера: http://pastebin.ubuntu.com/794388/

    часть кода моего спамера (Execute не дописан) ... может архитектура кому будет интересна ...

    основная идея:
    1) менеджер потоков
    2) входные данные при создании потока
    3) пока жду загрузки данных из нета проверяю fTerminate менеджера (простое поле можно читать без синхронизации)
    4) исходные данные через запись в логи (да "логи" - не удачное название...) менеджера. (а сам лог (TList<T>) генерирует событие)
     
  7. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    зачем на каждый try..except?
    допустим
    Code:
    var LogMessage:string;
    begin
      try
        LogMessage:=('Делаем a');
        a;
        LogMessage:=('Делаем b');
        b;
        LogMessage:=('Делаем c');
        c
        LogMessage:=('Делаем d');
        d
        LogMessage:=('Делаем e');
        e
        LogMessage:=('Делаем f');
        f
      except
        Log('Ошибка при... '+LogMessage);
      end;
    end;
    при чем a,b,c,d,e - могут быть участки кода, а не просто 1 строка
    так можно локализовать ошибку если простая трассировка не помогает
    если ошибка возникает периодически, то в лог записать все текущие значения переменных и т.п. на которые есть подозрения
    потом оставляете работать на некоторое время и видите в чем причина
     
  8. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    действительно) что то не подумал об этом =)
     
  9. Farcar

    Farcar Banned

    Joined:
    6 Nov 2011
    Messages:
    55
    Likes Received:
    0
    Reputations:
    0
    Вроде все пашет, но выбивает такую ошибку:

    [​IMG]
     
  10. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    на какой строке?
     
  11. Farcar

    Farcar Banned

    Joined:
    6 Nov 2011
    Messages:
    55
    Likes Received:
    0
    Reputations:
    0
    вот еще такую ошибку выбивает:

    [​IMG]
     
Loading...
Similar Threads - Delphi Многопоточность программе
  1. Peja
    Replies:
    0
    Views:
    2,676