Author Topic: Потоки  (Read 87335 times)

0 Members and 1 Guest are viewing this topic.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Потоки
« Reply #75 on: November 16, 2015, 08:25:49 PM »
Vint, Oraven - здорово, парни! Даж соскучился по этому форуму...)) А почему пауза запускает даже те потоки, которые не включены? Я уже молчу о том, что при паузе потоки перезапускаются... Это никак не лечится?
Я не ду... Потому и не бу...

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Потоки
« Reply #76 on: November 16, 2015, 09:48:07 PM »
Vint, Oraven - здорово, парни! Даж соскучился по этому форуму...)) А почему пауза запускает даже те потоки, которые не включены? Я уже молчу о том, что при паузе потоки перезапускаются... Это никак не лечится?

Действительно, очевидно лечится не использованием паузы. Как то надо выкручиваться...

Victor

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Потоки
« Reply #77 on: February 01, 2016, 12:15:54 PM »
Был вопрос

Ноябрь 03, 2014, 04:11:49 pm »

Здравствуйте! Есть 2 потока, у каждого после его работы свой период ожидания, подскажите, можно ли сделать, чтобы если у одного из них вышел назначенный период ожидания, а в это время совершает какую-то работу другой, первый чтоб продлил свое ожидание, дождался когда другой дойдет до своего wait(...),  и только тогда делал свои действия.


БЫЛ ОТВЕТ.

А смысл тебе тогда потоки делать?


Код: Clickermann
1.IF($time1 < $_time_t)
2.   // условие сработает снова через 60 сек
3.
4.   $time1 = $_time_t + 60
5.END_IF
6.
7.IF($time2 < $_time_t)
8.   // условие сработает снова через 2 минуты
9.
10.   $time2 = $_time_t + 120
11.END_IF
12.
13.WAIT(1)


А нельзя ли поподробнее.
1) Имеется три разные задачи которые кликаются в одной веб игре.(на одном экране)
2) Время запуска задач не постоянно.
3) Время выполнения задач от 30 секунд до 10 минут.
3) Как сделать что бы эти задачи не пересекались во времени. Но исполнялись с минимальными задержками. С пояснениями пожалуйста(я начинающий)
4) Задачи должны выполняться последовательно.
5) Скрипт зациклен. Выполняется сутками.
« Last Edit: February 01, 2016, 12:33:42 PM by Victor »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Потоки
« Reply #78 on: February 01, 2016, 12:48:02 PM »
Куда подробнее все и так просто. $_time_t возвращает текущее время Unix в секундах. Вот на этом и создается таймер, а потом в условии сравнивается значение переменной с текущем временем.
Code: (clickermann) [Select]
IF($time1 < $_time_t)
   // условие сработает снова через 60 сек
   
   $time1 = $_time_t + 60
END_IF

IF($time2 < $_time_t)
   // условие сработает снова через 2 минуты
   
   $time2 = $_time_t + 120
END_IF

IF($time3 < $_time_t)
   // условие сработает снова через 10 минут
   
   $time3 = $_time_t + 600
END_IF

WAITMS(50)

Victor

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Потоки
« Reply #79 on: February 01, 2016, 01:25:29 PM »
Спасибо буду пробовать :)

Victor

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Потоки
« Reply #80 on: February 01, 2016, 03:12:04 PM »
Что то не так.

Обьясните мне пожалуйста



1.IF($time1 < $_time_t)

2.   // условие сработает снова через 60 сек

3.  // что будет если условие выполняется больше 60 сек

4.   $time1 = $_time_t + 60

5.END_IF

6.

7.IF($time2 < $_time_t)

8.   // условие сработает снова через 2 минуты

9.
10.   $time2 = $_time_t + 120

11.END_IF



12.

13.IF($time3 < $_time_t)

14.   // условие сработает снова через 10 минут

15. //что будет если этому условию время выполняться, а 2 условие еще работает


16.   $time3 = $_time_t + 600

17.END_IF




Извините может глупо, но не пойму почему у меня не работает.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Потоки
« Reply #81 on: February 01, 2016, 03:29:48 PM »
Скрипт выполняется последовательно.
В данном случае на "верхнем" уровне в нём всего лишь три условия проверяющие не вышел ли таймер.
Если при проверке очередного IF таймер вышел будет выполняться тело условия. Пока оно не завершится и из условия не выйдем.

3.  // что будет если условие выполняется больше 60 сек
Будет выполняться столько сколько ему нужно.

Quote
15. //что будет если этому условию время выполняться, а 2 условие еще работает
как работало 2 так и будет работать. Скрипт вообще не узнает о том, что  "этому условию время выполняться", пока работа скрипта до него не дойдёт.

Ты же хотел:
Quote
3) Как сделать что бы эти задачи не пересекались во времени.
4) Задачи должны выполняться последовательно.

Извините может глупо, но не пойму почему у меня не работает.
"Не работает" слишком пространное объяснение. Что именно не работает? Не срабатывает по времени определённое условие? Наоборот, срабатывает не тогда когда нужно?

Что внутри этих условий? Может проблема "не работы" там?
« Last Edit: February 01, 2016, 03:32:45 PM by Vint »


Victor

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Потоки
« Reply #82 on: February 01, 2016, 03:55:40 PM »
Попробую обьяснить задачу, не силен я в программировании. Поэтому пишу ПОПРОБУЮ ОБЬЯСНИТЬ.

1) три процесса на одной веб игре. (должны выполнятся не пересекаясь во времени потому что интерфейс игры один а расположение кнопок на разных страницах разное)

2) 1й процес время исполнения кода 30сек, время ожидания завершения его в игре 3ч 20сек
    2й процес время исполнения кода 540сек, время ожидания завершения его в игре от 1ч 20 мин до 2ч 10мин
    3й процес время исполнения кода 60сек, время ожидания завершения его в игре 1ч 30мин

3)как сделать так что бы друг из за друга они не пропускали свои рабочие циклы.(не мешали друг другу)
   ну и попросту не тыкались в один и тот-же экран два разных процесса.

Пс. По отдельности все работает.
      Сейчас работает два скрипта через THREAD, в конце сприптов стоят WAIT.
      Беда в том что когда они пересекаются во времени, они мешают друг другу.

Ты же хотел:

Цитировать

3) Как сделать что бы эти задачи не пересекались во времени.
4) Задачи должны выполняться последовательно.

Да, но у каждого скрипта свое время исполнения( я имею ввиду с завершением в игре) и более короткие задачи меняются местами по времени старта с более длинными. можно как то мониторить этот процесс(переназначать их очередность в запуске или активность в потоках и регулярно их перезапускать исходя из этого).


« Last Edit: February 01, 2016, 04:01:45 PM by Victor »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Потоки
« Reply #83 on: February 01, 2016, 04:14:04 PM »
Не понимаю в чем твоя проблема?

Code: (clickermann) [Select]
IF($time1 < $_time_t)
   // условие сработает снова через 3часа 20 сек
   // 1й процес время исполнения кода 30сек
   $time1 = $_time_t + 10820
END_IF

IF($time2 < $_time_t)
   // условие сработает снова через 1 час 20 мин
   // 2й процес время исполнения кода 540сек
   // с "до 2ч 10мин" сложнее. Нужно вставить проверку завершилось ли задание, если нет то выставить ожидание в несколько секунд а не часов.
   $time2 = $_time_t + 4800
END_IF

IF($time3 < $_time_t)
   // условие сработает снова через 1 час 30 мин
   // 3й процес время исполнения кода 60сек
   $time3 = $_time_t + 5400
END_IF

WAITMS(50)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Потоки
« Reply #84 on: February 01, 2016, 04:14:46 PM »
Делать то же что ты и делаешь руками.
Вот что делаешь, если выполняешь процесс 2 длительностью 9 мин, а в это время наступило время делать 3?

Про очерёдность ты должен сам решить что для тебя важней. Твою игру никто не знает, кроме тебя.


Victor

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Потоки
« Reply #85 on: February 01, 2016, 04:21:01 PM »
 :) Огромное спасибо.
Все обьяснили. Буду делать и надеюсь ума хватит все допилить.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Потоки
« Reply #86 on: February 01, 2016, 04:26:01 PM »
Хорошо "объяснение". Три раза повторили одно и то же  :D ;D


Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Re: Потоки
« Reply #87 on: February 01, 2016, 04:31:11 PM »
:) Огромное спасибо.
Все обьяснили. Буду делать и надеюсь ума хватит все допилить.
осторожней там с умом, от него иногда горе бывает, смотри не перепили! ;)

АНТИКЛАН

  • Активный участник
  • ***
  • Posts: 111
    • View Profile
Re: Потоки
« Reply #88 on: February 07, 2016, 06:14:52 AM »
Хорошо "объяснение". Три раза повторили одно и то же  :D ;D

Повторение — мать учения! :D

i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
Re: Потоки
« Reply #89 on: February 08, 2016, 09:53:14 AM »
заметка из личного опыта

если поток ищет на экране картинки, лучше избегать в нём использования IF_PICTURE_IN и IF_PIXEL_IN (возвращающих результат в глобальные $_return1 и $_return2), заменив на SCANPICTURE и SCANPXL соответственно.