Что нового

Два паралельных Loop'a

Юрий

Новичок
Сообщения
82
Репутация
3
Можна ли чтобы паралельно работали циклы While и Func, например?
Код:
Local $a = 0, $b = 0

While 1 ; вот допустим какой-то цикл While
   $a = $a + 1
   If $a = 20 Then
	  MsgBox(64 , "Программа" , "Готово!" & @LF & $b & @LF & $a)
	  Exit
   EndIf
   Sleep(50)
WEnd

Func _func() ; и мне нужно, что бы эта ф-ция работала паралельно с While
   $b = $b + 1
EndFunc
   
; это вообще возможно? если да, то покажите, пожалуйста, где и как мне её запустить)
 
Автор
Юрий

Юрий

Новичок
Сообщения
82
Репутация
3
Если я правильно понял, то эта команда просто переодически вклинивает функцию в работу, а не запускает её паралельно. или я ошибаюсь? :scratch:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Юрий [?]
не ошибаешься. "параллельный", как ты выражаешься, запуск двух циклов это уже многопоточность, которой AutoIt не обладает.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Зачем _func вызывать параллельно с циклом While, если Вам просто нужно увеличивать переменную $b на 1, то это можно делать в самом цикле.

Код:
Local $a = 0, $b = 0

While 1
    $a += 1
	$b += 1
    If ($a = 20) Then
       Exit MsgBox(64 , "Программа" , "Готово!" & @LF & $b & @LF & $a)
    EndIf
    Sleep(50)
WEnd
 
Автор
Юрий

Юрий

Новичок
Сообщения
82
Репутация
3
но когда у меня есть ещё допустим 5 функций, которые довольно увесистые и в плане объёма, и в плане поглощаемого ими пространства оперативки, проца, то как-то скрипты особым быстродействием не отличаются.
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
Код:
Local $a = 0, $b = 0, $c = 0

While 1 ; вот допустим какой-то цикл While
   $a = $a + 1
_func1()
_func2()
   If $a = 20 Then
      MsgBox(64 , "Программа" , "Готово!" & @LF & $c & @LF & $b & @LF & $a)
      Exit
   EndIf
   Sleep(50)
WEnd

Func _func1() ; и мне нужно, что бы эта ф-ция работала паралельно с While
   $b = $b + 1
EndFunc

Func _func2() ; и мне нужно, что бы эта ф-ция работала паралельно с While
   $c = $c + 1
EndFunc
 
Верх