Что нового

[Dota 2] Что делать если хочется мультипоточность

tinliin

Новичок
Сообщения
6
Репутация
0
пилю бота для доты. дабы не забанило, все по хардкору, по пикселям. пикселей-датчиков получается не просто много а ОЧЕНЬ много, и некоторые "модули" кода очень хочется выполнять одновременно.
когда запускал черновой вариант, который работал с фиксированными точками, комп неслабо так жужжал и фпс до 30 просел в доте :D сейчас допиливаю так, чтобы точки не были привязаны к конкретному цвету и количество датчиков вырастет раза в 2-3. ну, вдруг вальве что-то там поменяет, проще будет адаптировать.
тормоза таки из-за маленьких задержек, проблема в том что циклы разных модулей должны/могут работать с разной скоростью, но так как цикл один, приходится делать по наименьшему.
я придумал два варианта:
1) сделать пачку таймеров, которые будут притормаживать тяжелые модули дабы AutoIt их не крутил с такой же скоростью как легкие
2) разбить код на несколько exe'шников, сделать один управляющий и организовать сообщение через *.lck файлы с небольшой строкой данных внутри

есть еще какие умные идеи по реализации / оптимизации?
если что, бот будет бегать лоуприор в лесу + сливать игры for teh lulz при этом записывая войс :laugh:

ps
не про кодер, так, любитель поковырятся :smile:
 

Prog

Продвинутый
Сообщения
597
Репутация
77
Re: [Автоматизация] Что делать если хочется мультипоточность

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

tinliin

Новичок
Сообщения
6
Репутация
0
Re: [Автоматизация] Что делать если хочется мультипоточность

вот это кстати интересный вариант, пойду мучить гугл и вспоминать си :stars:
 

Prog

Продвинутый
Сообщения
597
Репутация
77
Re: [Автоматизация] Что делать если хочется мультипоточность

DLL можно написать на многих языках (C++, паскале, бейсике и т. д.) и логичнее это делать на том, который лучше знаете или более понятен.
 
Автор
T

tinliin

Новичок
Сообщения
6
Репутация
0
Re: [Автоматизация] Что делать если хочется мультипоточность

ясное дело можно.. из нормальных языков я немного знаю си++ и яву, так что выбора особо не стоит :smile:
 

qqww22

Новичок
Сообщения
115
Репутация
4
Re: [Автоматизация] Что делать если хочется мультипоточность

с каких пор ява научилось создавать dll?
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
Re: [Автоматизация] Что делать если хочется мультипоточность

OffTopic:
с каких пор ява научилось создавать dll?
А кто говорил, что она это умеет ?
AutoIt не со всеми DLL работает корректно, приходилось писать свои DLL на Delphi, что-бы связать стороннюю DLL с Autoit.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Re: [Автоматизация] Что делать если хочется мультипоточность

ra4o сказал(а):
OffTopic:
с каких пор ява научилось создавать dll?
А кто говорил, что она это умеет ?

Для того чтобы это уметь ей нужно быть явой для винды.
 

Erozio

Новичок
Сообщения
10
Репутация
0
Re: [Автоматизация] Что делать если хочется мультипоточность

Я для реализации "многопоточности" писал каждый "поток" в отдельном скрипте, а для общения "потоков" использовал .ini файл с семафорами.
 

Prog

Продвинутый
Сообщения
597
Репутация
77
Re: [Автоматизация] Что делать если хочется мультипоточность

Erozio [?]
а для общения "потоков" использовал .ini файл
И получили бы медленную работу и нагрузку на диск, а значит его износ!
Обмен данными нужно производить через общую память или сокеты.
 

Erozio

Новичок
Сообщения
10
Репутация
0
Re: [Автоматизация] Что делать если хочется мультипоточность

Prog сказал(а):
Erozio [?]
а для общения "потоков" использовал .ini файл
И получили бы медленную работу и нагрузку на диск, а значит его износ!
Обмен данными нужно производить через общую память или сокеты.

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

qqww22

Новичок
Сообщения
115
Репутация
4
Re: [Автоматизация] Что делать если хочется мультипоточность

Prog сказал(а):
Erozio [?]
а для общения "потоков" использовал .ini файл
И получили бы медленную работу и нагрузку на диск, а значит его износ!
Обмен данными нужно производить через общую память или сокеты.
Да не пугай ты так :smile:, если данных не больше 10кб какой износ)) а вот торрент реально насилует.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Erozio сказал(а):
Я для реализации "многопоточности" писал каждый "поток" в отдельном скрипте, а для общения "потоков" использовал .ini файл с семафорами.
Я так делал с недобросовестными покупателями. :D
Если человек не оплачивал покупку, бот от сервера управления получал команду на изнасилование диска, продолжая работать но выводя время от времени просьбу об оплате, он параллельно насиловал системный диск постоянными перезаписями данных.
 
Верх