Пример базовой работы с потоками

Демонстрация работы с потоками: создание, пауза, возобновление работы.

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

procedure Thread1();
var T: Int64;
begin
  T:= GetTickCount();
  while Delay(500) do begin
    Print('Thread 1');
    if (GetTickCount() > T+1500) then begin
      Print('Suspend "Main Thread" and "Thread 2"...');
      Script.Suspend();
      T:= GetTickCount();
      while Delay(500) and (GetTickCount() < T+2000) do Print('Thread 1'); 
      Print('Resume all threads...');
      Script.Resume();
      Exit;
    end;
  end;
end;

procedure Thread2();
begin
  while Delay(500) do Print('Thread 2');
end;

begin
  Script.NewThread(@Thread1);
  Script.NewThread(@Thread2);
  while Delay(500) do Print('Main Thread');

  Delay(-1);
end.

Main Thread
Thread 2
Thread 1
Main Thread
Thread 2
Thread 1
Thread 1
Main Thread
Thread 2
Main Thread
Thread 2
Thread 1
Suspend "Main Thread" and "Thread 2"...
Thread 1
Thread 1
Thread 1
Thread 1
Thread 1
Resume all threads...
Main Thread
Thread 2
Main Thread
Thread 2
Main Thread
Thread 2
...
Структура классов ArcheAngel бота
  • Классы
    • TGameControl
    • TPaxEngine
    • TGameObject
      • TItem
        • TAucItem
      • TZoneItem
      • TSpawn
        • TLive
          • TNpc
            • TMount
          • TDoodad
          • TPlayer
            • TUser
      • TMailItem
      • TEffect
        • TBuff
        • TSkill
          • TCast
    • TGameList
      • TSpawnList
        • TPlayers
        • TMobs
        • TMounts
        • TDoodads
        • TNpcs
      • TInventory
      • TSkills
      • TSlotList
      • TZoneList
      • TBuffs
      • TMail
      • TAuction
    • TChatMessage
    • TAccount
    • TAccounts
    • THistoryMessage
    • TMessages