Author Topic: Много потоков  (Read 2266 times)

0 Members and 1 Guest are viewing this topic.

TNT

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Много потоков
« on: March 04, 2019, 09:41:10 PM »
Есть возможность запускать несколько одинаковых потоков, которые будут отличаться только параметром (парамертами)?
Допустим мне нужно по событию запустить поток, который по завершению остановится. Таких потоков может быть одновременно много.
Есть возможность описать один поток и запускать несколько экземпляров этого потока или единственный вариант, это заранее описывать в скрипте сотню потоков и запускать их по мере необходимости?

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Много потоков
« Reply #1 on: March 04, 2019, 09:59:26 PM »
только если 1 раз написать нужный кусок кода и запускать его копии
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Много потоков
« Reply #2 on: March 04, 2019, 10:14:40 PM »
можно заморочиться с предварительным копированием файла и редактированием его строк перед запуском с последующим удалением после загрузки скрипта
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

TNT

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Re: Много потоков
« Reply #3 on: March 05, 2019, 12:53:04 PM »
Code: [Select]
$thr="thr1"
SetThread($thr, 1)
Переменные нельзя использовать для запуска тредов?

Code: [Select]
IF($n=1)
SetThread(thr1, 1)
END_IF
IF($n=2)
SetThread(thr2, 1)
END_IF
...
Так что-ли выкручиваться?

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Много потоков
« Reply #4 on: March 05, 2019, 01:41:46 PM »
попробуй без скобок

Code: (clickermann) [Select]
$thr=thr1
SetThread($thr, 1)

Code: (clickermann) [Select]
FOR($count = 0, $count < 4)
   SETTHREAD(STRCONCAT(THR_, CHAR(65+$count)), 1)
END_CYC

WHILE($count ! 0)
   WAITMS(5)
END_CYC

HALT

THREAD(THR_A, 0)
   PRINT("A")
   INC($count, -1)
   SETTHREAD(THR_A, 0)
END_THREAD

THREAD(THR_B, 0)
   PRINT("B")
   INC($count, -1)
   SETTHREAD(THR_B, 0)
END_THREAD

THREAD(THR_C, 0)
   PRINT("C")
   INC($count, -1)
   SETTHREAD(THR_C, 0)
END_THREAD

THREAD(THR_D, 0)
   PRINT("D")
   INC($count, -1)
   SETTHREAD(THR_D, 0)
END_THREAD
« Last Edit: March 05, 2019, 05:47:04 PM by Космич »
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»