Автор Тема: Потоки  (Прочитано 48557 раз)

0 Пользователей и 1 Гость просматривают эту тему.

i0

  • Оплот сообщества
  • ****
  • Сообщений: 328
  • cman 4.11.003, ie, opera-presto, win7 x86, x64
    • Просмотр профиля
Re: Потоки
« Ответ #90 : Февраль 08, 2016, 10:32:15 am »
мне проще в мелких потоках обходить эти переменные стороной, чем в основном потоке с десятками ифпикчаинов сохранять переменные каждый раз

+не на 100% уверен, что два события не могут совпасть.

Victor

  • Зашел в гости
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Потоки
« Ответ #91 : Апрель 16, 2016, 07:55:18 pm »
Доброго времени суток, подскажите пожалуйста как в данный скрипт
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)


в одно из "IF" вставлять, по истечении времени ожидания, на выполнение новый файл(.cms)
имеется 10 скриптов, (1, 2, 3, 4, 5, 6, 7, 8, 9,10 -.cms)
нашел #include, но не пойму он вес скрипт на себя заменит или только то что между IF и END_IF.
и не пойму как сделать чтобы каждый новый раз он новый файл грузил.
Подскажите пожалуйста.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3081
  • Котэ
    • Просмотр профиля
Re: Потоки
« Ответ #92 : Апрель 17, 2016, 10:55:52 am »
За место #include "1.cms" будет вставлено то что находится в файле 1.cms
Код: Clickermann
  1. IF($time1 < $_time_t)
  2.   INC($n,1)
  3.   SWITCH($n)
  4.   CASE(1)
  5.      #include "1.cms"
  6.   CASE(2)
  7.      #include "2.cms"
  8.   CASE(3)
  9.      #include "3.cms"
  10.   CASE(4)
  11.      #include "4.cms"
  12.   CASE(5)
  13.      #include "5.cms"
  14.   CASE(6)
  15.      #include "6.cms"
  16.   CASE(7)
  17.      #include "7.cms"
  18.   CASE(8)
  19.      #include "8.cms"
  20.   CASE(9)
  21.      #include "9.cms"
  22.   CASE(10)
  23.      #include "10.cms"
  24.   DEFAULT
  25.   END_SWITCH
  26.   IF($n = 10)
  27.      $n = 0
  28.   END_IF
  29.   $time1 = $_time_t + 10820
  30. END_IF

Victor

  • Зашел в гости
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Потоки
« Ответ #93 : Апрель 17, 2016, 10:17:34 pm »
 ::)Спасибо.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3046
  • Лечу куда хочу. cman 4.11.003, xp32
    • Просмотр профиля
Re: Потоки
« Ответ #94 : Апрель 18, 2016, 10:02:39 am »
Только так лучше не привыкай.
 Если в подключаемом модуле будет подпрограмма или поток, так делать нельзя.


dramster

  • Герой форума
  • *****
  • Сообщений: 626
    • Просмотр профиля
Re: Потоки
« Ответ #95 : Апрель 18, 2016, 09:37:04 pm »
Только так лучше не привыкай.
 Если в подключаемом модуле будет подпрограмма или поток, так делать нельзя.
насчет потоков ладно, но что с подпрограммами в #include не так? пользуюсь сабами в инклудах, вроде проблем небыло  :-\

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3081
  • Котэ
    • Просмотр профиля
Re: Потоки
« Ответ #96 : Апрель 18, 2016, 09:45:37 pm »
Только так лучше не привыкай.
 Если в подключаемом модуле будет подпрограмма или поток, так делать нельзя.
насчет потоков ладно, но что с подпрограммами в #include не так? пользуюсь сабами в инклудах, вроде проблем небыло  :-\

Не так будет при типичном нубском использовании #include. Скажем одно и тоже вставляется несколько раз, а там и ГОТО с метками и возможно подпрограммы. Такое нельзя дублировать!

Правильное использование #include, весь код в прилагаемом файле заключен в подпрограмму, с верху в основном скрипте пишется этот #include а ниже, где требуется вызовы.


Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3046
  • Лечу куда хочу. cman 4.11.003, xp32
    • Просмотр профиля
Re: Потоки
« Ответ #97 : Апрель 19, 2016, 08:58:42 am »
насчет потоков ладно, но что с подпрограммами в #include не так? пользуюсь сабами в инклудах, вроде проблем небыло  :-\
Конечно работают, для этого они и предназначены.
Но вот здесь уже работать не будут
Код: Clickermann
  1. SUB(name1)
  2.   #include "mylib.cms"
  3. END_SUB
Если в mylib.cms есть подпрограммы или потоки. Потому что include закопан в тело другой подпрограммы, что делать нельзя. Правильно делать так
Код: Clickermann
  1. #include "mylib.cms"
  2. SUB(name1)
  3.   name2() // вызов ПП из mylib.cms
  4. END_SUB
Все инклюды в корне скрипта.


Victor

  • Зашел в гости
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Потоки
« Ответ #98 : Август 04, 2016, 01:48:05 pm »
Всем добрый день. ;)
Появился новый вопрос. ;)

Возможно ли  $time2 = $_time_t + 120 указать ему не +120 а время которое в include пропиисано как время простоя.
Ну и естественно там его описать так чтобы оно не влияло на временной простой самого include.

Попробую уточнить бо сам не пойму поймете ли вы меня.
когда исполняется END_IF он берет на исполнение  разные include в которых разное время простоя, хотелось бы что бы после исполнения  include,  END_IF брал время которое описано в последнем исполняемом include и присваивал его ка время простоя. ::)


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

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3046
  • Лечу куда хочу. cman 4.11.003, xp32
    • Просмотр профиля
Re: Потоки
« Ответ #99 : Август 04, 2016, 03:16:48 pm »
...END_IF брал время...
END_IF в принципе ничего не берёт, это знак окончания блока IF

после исполнения  include
Где в примере эти include? Как они прописаны? В них код в подпрограммах?
Потому что с include тут такое вытворяют, что на голову не наденешь.

Если сделать предположение, что вызываются разные подпрограммы из инклюдов...
Ну так и задавай там переменную с временем простоя

Код: Clickermann
  1. $downtime = 120

Все переменные глобальны. Код из всех include вставляется на место, где прописано подключение.
Примерно так:
Код: Clickermann
  1. // код в 1.cms
  2. SUB(подпр_1)
  3.    // ...
  4.    $downtime = 120 // время простоя выставляем 120
  5. END_SUB
  6.  
  7. // код в 2.cms
  8. SUB(подпр_2)
  9.    // ...
  10.    $downtime = 30 // время простоя выставляем 30
  11. END_SUB
  12.  
  13.  
  14. // основной скрипт
  15. #include "1.cms"
  16. #include "2.cms"
  17. IF($time2 < $_time_t)
  18.    // ...
  19.    IF($n = 3)
  20.        подпр_1()
  21.    ELSE
  22.        подпр_2()
  23.    END_IF
  24.    // ...
  25.    $time2 = $_time_t + $downtime
  26. END_IF



Victor

  • Зашел в гости
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Потоки
« Ответ #100 : Август 04, 2016, 03:57:21 pm »
Спасибо сегодня вечером попробую :)

Victor

  • Зашел в гости
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Потоки
« Ответ #101 : Август 04, 2016, 04:52:28 pm »
Я так понимаю, если это

Код: Clickermann
  1. IF($time1 < $_time_t)
  2.   INC($n,1)
  3.   SWITCH($n)
  4.   CASE(1)
  5.      #include "1.cms"
  6.   CASE(2)
  7.      #include "2.cms"
  8.   CASE(3)
  9.      #include "3.cms"
  10.   CASE(4)
  11.      #include "4.cms"
  12.   CASE(5)
  13.      #include "5.cms"
  14.   CASE(6)
  15.      #include "6.cms"
  16.   CASE(7)
  17.      #include "7.cms"
  18.   CASE(8)
  19.      #include "8.cms"
  20.   CASE(9)
  21.      #include "9.cms"
  22.   CASE(10)
  23.      #include "10.cms"
  24.   DEFAULT
  25.   END_SWITCH
  26.   IF($n = 10)
  27.      $n = 0
  28.   END_IF
  29.   $time1 = $_time_t + $downtime
  30. END_IF
  31.  
  32.  

Вставить сюда

Код: 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. IF($time3 < $_time_t)
  14.   // условие сработает снова через 10 минут
  15.  
  16.   $time3 = $_time_t + 600
  17. END_IF
  18.  
  19. WAITMS(50)
  20.  
  21.  



ПОЛУЧИМ  ЭТО и скрип будет работать.
Проверте пожалуйста ни накосячил ли я где с блоками IF(я их описывал как END_IF).

Код: Clickermann
  1.  
  2. IF($time1 < $_time_t)
  3.   // условие сработает снова через $downtime (описан в поключаемом модуле)
  4.    INC($n,1)
  5.   SWITCH($n)
  6.   CASE(1)
  7.      #include "1.cms"
  8.   CASE(2)
  9.      #include "2.cms"
  10.   CASE(3)
  11.      #include "3.cms"
  12.   CASE(4)
  13.      #include "4.cms"
  14.   CASE(5)
  15.      #include "5.cms"
  16.   CASE(6)
  17.      #include "6.cms"
  18.   CASE(7)
  19.      #include "7.cms"
  20.   CASE(8)
  21.      #include "8.cms"
  22.   CASE(9)
  23.      #include "9.cms"
  24.   CASE(10)
  25.      #include "10.cms"
  26.   DEFAULT
  27.   END_SWITCH
  28.   IF($n = 10)
  29.      $n = 0
  30.   END_IF
  31.   $time1 = $_time_t + $downtime
  32. END_IF
  33.  
  34.  
  35. IF($time2 < $_time_t)
  36.   // условие сработает снова через 2 минуты
  37.  
  38.   $time2 = $_time_t + 120
  39. END_IF
  40.  
  41. IF($time3 < $_time_t)
  42.   // условие сработает снова через 10 минут
  43.  
  44.   $time3 = $_time_t + 600
  45. END_IF
  46.  
  47. WAITMS(50)
  48.  
  49.  


И в итоге я имею три блока IF, из которых два с постоянной задержкой, а один с загр кодом и переменной задержкой.
Неужели победа!!!

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3046
  • Лечу куда хочу. cman 4.11.003, xp32
    • Просмотр профиля
Re: Потоки
« Ответ #102 : Август 04, 2016, 06:24:22 pm »
Ну, если в инклюдах будет прописано $downtime=...

Но это не нормальное использование include. Если там есть подпрограммы, то работать не будет.


Victor

  • Зашел в гости
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Потоки
« Ответ #103 : Август 04, 2016, 07:31:52 pm »
В #include имеются только блоки IF(поиск текста по цвету, на веб странице.никаких переходов по строкам кода, все последовательно), что не пойдет работать?  :'(

Напишите пожалуйста как правильно, чувствую что очень просто но сам не соображу :-[
Я так понимаю надо правильно, подключаемый (#include)код оформить. Но как? ::)
« Последнее редактирование: Август 05, 2016, 12:40:52 am от Victor »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3046
  • Лечу куда хочу. cman 4.11.003, xp32
    • Просмотр профиля
Re: Потоки
« Ответ #104 : Август 05, 2016, 08:33:57 am »
Если там есть подпрограммы, то работать не будет.
Что здесь непонятного? Если подпрограмм нет, то всё будет нормально.