Динамическая многопоточность.
-
Доброго времени суток!
Такая задача у меня стоит. Мне нужно реализовать динамическую многопоточность.
То есть при каждом запуске скрипта может быть или 10 или 1 или 24 потока. Не уверен что такое можно реализовать в рамках одного скрипта, но всё же!В моём случае есть файл с разным количеством строк.
Каждый поток должен обрабатывать свою строку! Так как поток принимает только ресурс или число, то я предположил, что нужно использовать парсинг строк файла в список и переменную "количество элементов в списке" я сохранил в совсем другой ресурс и его подключил в "количество потоков" и всё это в OnApplicationStart.
По идее скрипт вначале должен считать "количество строк" в файле и сохранить в другой файл уже "число строк" и в этом другом файле будет "количество потоков".
Естественно у меня ничего не получилось и BAS даже иногда крашил в процессе изобретения мной велосипеда.Как быть? Почему бы просто не подключить переменную в "Количество потоков "? или я чего то не понимаю? наверное при запуске скрипта уже сразу запускается неизменное количество потоков из ресурса, а действия в OnApplicationStart просто выполняются самыми первыми? при чём каким то 1 может быть самым последним потоком как я понял?
скрипт приложил в архив вместе с двумя .txt файлами.
-
@sitiros Может просто взять потоков побольше и сделать так, чтобы каждый взял свою строку, а когда строки закончатся сделать условие и не перезапускать поток, а в ресурсе сделать не прерывать приложение и убрать повторное использование.(Еще можно наверно использовать функцию Закрыть браузер, чтобы уменьшить нагрузку от не работающих потоков)
-
Такая задача у меня стоит. Мне нужно реализовать динамическую многопоточность.
То есть при каждом запуске скрипта может быть или 10 или 1 или 24 потока. Не уверен что такое можно реализовать в рамках одного скрипта, но всё же!В начале работы потока определяете сколько потоков должно быть, если текущий номер потока больше чем нужное количество, вызываете действие fail c параметром Не перезапускать поток.
Но такой подход является следствием выбора неправильной архитектуры. Достаточно просто использовать систему ресурсов. Каждый поток будет брать свою строку из файла и использовать ее. Если потоков будет больше, чем строк в файле, остальные потоки будут ждать пока ресурс освободится.