Выполнение функций, после завершения потоков [delphi]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by OPF_Nik, 3 Feb 2010.

  1. OPF_Nik

    OPF_Nik New Member

    Joined:
    6 Nov 2009
    Messages:
    36
    Likes Received:
    3
    Reputations:
    -5
    Code:
    //scan - поток
    ..............
    if th >= k then
    th:= k;
    for q:= 1 to th do
    Scan.Create(false);
    sleep(200);
    end;
    end.
    
    вместо "........" реализовать проверку:
    "После того как все потоки выполнены"....
    Что бы, если проверенны не все порты, опять запустить цикл создания потоков
    Подскажите как реализовать?
     
  2. ZdezBilYa

    ZdezBilYa Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    Такой вариант: выполнять эту проверку после завершения последнего потока.
    Т.е.

    T:=0;
    /---------------/
    поток что-то делает
    всё сделал - увеличиваем переменную T
    если T равно количеству потоков (т.е. это последний поток завершается), то делаем проверку и при необходимости снова запускаем потоки
    /---------------/
     
  3. OPF_Nik

    OPF_Nik New Member

    Joined:
    6 Nov 2009
    Messages:
    36
    Likes Received:
    3
    Reputations:
    -5
    ZdezBilYa думал об этом, только как эту проверку реализовать?
     
  4. Chrome~

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

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Да, можно делать все так, как говорит ZdezBilYa. Или же можно еще переменной T в самом начали присвоить значение количества потоков, а потом в конце основной функции потока пишешь dec(T). Если T равняется 0, значит все потоки выполнены.
     
  5. OPF_Nik

    OPF_Nik New Member

    Joined:
    6 Nov 2009
    Messages:
    36
    Likes Received:
    3
    Reputations:
    -5
    спс, попробую
     
  6. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    http://msdn.microsoft.com/en-us/library/ms686946%28VS.85%29.aspx