Что нового

[Процессы] Можно ли в AutoIT создать параллельный поток ?

KEO

Новичок
Сообщения
26
Репутация
0
Добрый день.

Помнится, когда (давненько) я занимался любительским программированием на Дельфи, то в своей программке я создавал параллельный поток (так называемый Thread) функцией CreateThread. Кто не в курсе: этот такой поток, который запускается параллельно с основным потоком и выполняет свои (заданные ему) функции, но оба потока (основной и созданный параллельный) находятся под управлением одного запущенного приложения.

В AutoIT есть что либо подобное ? Можно как то запустить 2 потока одновременно в одном скрипте ?


Чуть-чуть уточню. Я сделал бота для онлайн игры Клондайк. Он последовательно выполняет нужные мне действия. Сначала перегружает страницу, затем центрует и калибрует экран, устанавливая окно в нужно место, проверяет состояние энергии, пополняет в случае необходимости, потом жмет куда мне надо. Ну и так далее. А в процессе выполнения всех этих действий могут (нежданно и не запланированно) вылазеть PopUp-окна (внутри самой игры). Как вариант, сейчас я просто ввел дополнительную функцию проверки наличия на экране этого окна и периодически её запускаю. То есть: откалибровал окно - запустил функцию проверки наличия выскочившего окна, поел энергетик - опять запустил проверку наличия вылезших окон, нажал "собрать урожай" - опять проверка. И так далее.

Вот я и хочу запустить параллельный поток, который будет работать под управлением одного скрипта и постоянно следить за тем, что если появляется выскочившее окно - гасить его ! Запускать одновременно два скрипта - не хочу так.
Ну надеюсь вы поняли о чем я.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Re: [Процессы] Можно ли в AutoIT создать параллельный поток (процесс) ?

KEO [?]
В AutoIT есть что либо подобное ? Можно как то запустить 2 потока одновременно в одном скрипте ?

Нет
 
Автор
K

KEO

Новичок
Сообщения
26
Репутация
0
Вот, кстати, нашел тут интересную темку как раз про мою проблему.
http://autoit-script.ru/index.php?topic=6322.0
Осталось только почитать и разобраться. :smile:
 

agikon

Знающий
Сообщения
789
Репутация
17
A Adlibregister разве не отдельны поток?
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
agikon
Ну конечно нет, это таймер для запуска функции, при ее исполнении остальные действия будут приостановлены пока она не закончится что в прочем не отличается от обычной функции, разве только тем что по таймеру будет выполнятся.
 

winstan

Эксплотатор)
Сообщения
406
Репутация
79
Viktor1703 [?]
KEO [?]Цитата
В AutoIT есть что либо подобное ? Можно как то запустить 2 потока одновременно в одном скрипте ?
Нет
Вообще то можно...
Но запуск второго потока работы скрипта критичен и вызывает массу проблем взаимосвязи потоков и частое "падение" процесса при запуске или во время работы двух потоков, а закрытие любого потока абсолютно всегда критично для всего процесса
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
winstan [?]
Вообще то можно...Но запуск второго потока работы скрипта критичен и вызывает массу проблем взаимосвязи потоков и частое "падение" процесса при запуске или во время работы двух потоков, а закрытие любого потока абсолютно всегда критично для всего процесса

Это ни есть хорошо, так что нельзя, AutoIt до этого ещё не вырос (и не вырастит, читайте "что ни когда не будет реализовано в AutoIt")...
 

winstan

Эксплотатор)
Сообщения
406
Репутация
79
Viktor1703 [?]
Это ни есть хорошо, так что нельзя, AutoIt до этого ещё не вырос (и не вырастит, читайте "что ни когда не будет реализовано в AutoIt")...
Нужно осознавать что autoit создан для лёгкой автоматизации различных действий, а не для вычесления к огромных массивов данных.
 
Автор
K

KEO

Новичок
Сообщения
26
Репутация
0
Почитал ваши ответы и почитал ту тему, на которую я указал в 3-м посту.

Ну в общем я понял, что мультипоточность отсутствует в AutoIT. Жаль. Очень жаль. Такую важную вещь разработчики могли бы и предусмотреть изначально.

Как правильно сказали: если мультипоточность создать можно, но работать она будет крайне криво - будем считать, что её нет.

Я пока не разбирался с функицией Adlibregister, которую мне тут посоветовали, но если верить ответу MnM, то это НЕ то, что мне нужно. Хотя запускать что либо по таймеру - это интересно и возможно в будущем как нибудь пригодится. Надо мне будет глянуть эту функцию.
 

erlik

Продвинутый
Сообщения
317
Репутация
84
OffTopic:
Такую важную вещь разработчики могли бы и предусмотреть изначально
Если разработчик изначально собирался создать легкий пистолет для ближнего боя с магазином на 9 патронов, то обязан ли он предусматривать возможность создания на его базе ленточного пулемета с темпом стрельбы 500 выстрелов\мин и боекомплектом на 1000 патронов? ;D Хочешь 'стрелять' так же - добро пожаловать в мир компилируемых языков С, C++, C# и т.д.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
KEO
Если Вам так нравятся потоки в Делфи, то пишите ботов на Делфи.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
erlik

C# находится между компилируемым и интерпретируемым, т.е. это не полноценный компилируемый язык, однако потоки там есть.

P.S. Python - интерпретируемый (в первый раз когда попробовал Python, меня вообще удивило что там нет стандартного инструмента позволяющего собирать из скриптов автономные exe) и даже там потоки есть, так же и Lua, мне стало интересно что нужно так кардинально изменить в интерпретаторе, что бы добавить туда потоки? Да даже пусть не потоки, хотя бы те же самые Namespace.
 

erlik

Продвинутый
Сообщения
317
Репутация
84
Viktor1703
OffTopic:
В Lua корутины это все таки псевдопотоки, которые к реальной многопоточности отношения не имеют вообще. Так что и там этого тоже нет. А Python, видимо, изначально планировали как интерпретируемый язык с возможностями компилируемого. Потому он так и популярен.
что нужно так кардинально изменить в интерпретаторе, что бы добавить туда потоки
Ну, наверно, это как из 'лады калины' делать спорткар - то есть менять придется все. :smile:
А на такой подвиг разработчики AutoIT похоже не готовы. И это явно не их вина.
 

sims

Осваивающий
Сообщения
184
Репутация
24
OffTopic:
erlik [?]
Python, видимо, изначально планировали как интерпретируемый язык с возможностями компилируемого.
Дайте пример нативных exe и dll на питоне.
Если это не возможно (нет компилятора), то странно утверждение что у него возможности компилируемого.
 

erlik

Продвинутый
Сообщения
317
Репутация
84
sims
OffTopic:
Я, возможно, выразился не точно, так как имел ввиду прежде всего такие особенности языка (Python) как многопоточность, ООП, кроссплатформенность (свойственные почти всем компилируемым ЯП). Что там еще повлияло на его распространненость в сообществе программистов - лучше известно тем, кто пишет на нем, я лишь сужу со стороны. И сказать хотел лишь то, что в Python, на мой взгляд, изначально заложили больше возможностей, нежели в большинство остальных скриптовых ЯП. AutoIT отличный язык, но нельзя требовать от него больше, чем он может дать. AutoHotKey насколько я знаю так же находится на стадии когда 'низы хотят (больше функционала), а верхи не могут' :smile:
 

Z_Lenar

Продвинутый
Сообщения
209
Репутация
52
KEO
Что Вам мешает создавать несколько копий процесса и объединить их работу с помощью объектов синхронизации (Memory Mapped Files, Mutex, Semaphore)? Не поверю что задача настолько критична к ресурсам что 2 (или, например 10) копии программы замедлят работу.

Еще одно решение:
http://autoit-script.ru/index.php/topic,15493.msg96651.html#msg96651
 
Верх